J'utilise C# et utilise SqlBulkCopy. J'ai un problème cependant. J'ai besoin de faire un insert de masse dans une table puis un autre insert de masse dans une autre table.Possibilité de récupérer les ID PrimayKey après une BulkCopy SQL?
Ces 2 ont une relation PK/FK.
Table A
Field1 -PK auto incrementing (easy to do SqlBulkCopy as straight forward)
Table B
Field1 -PK/FK - This field makes the relationship and is also the PK of this table. It is not auto incrementing and needs to have the same id as to the row in Table A.
Ainsi, ces tables ont une relation un à un mais je ne suis pas sûr comment récupérer tous les PK Id que l'insert de masse fait puisque je les ai besoin pour le tableau B.
Modifier
Puis-je faire quelque chose comme ça?
SELECT *
FROM Product
WHERE NOT EXISTS (SELECT * FROM ProductReview WHERE Product.ProductId = ProductReview.ProductId AND Product.Qty = NULL AND Product.ProductName != 'Ipad')
Cela devrait trouver toutes les lignes où la vient d'être inséré copie en bloc sql. Je ne suis pas sûr de savoir comment prendre les résultats de cela, puis faire un insert de masse avec eux d'un SP. Le seul problème que je peux voir avec ceci est que si un utilisateur fait les enregistrements un à la fois et une cette commande s'exécute en même temps il pourrait essayer d'insérer une rangée deux fois dans la "table de revue de produit". Donc, disons que j'ai eu comme un utilisateur utilisant la manière manuelle et un autre utilisateur faisant la masse à peu près au même moment.
manière manuelle. 1. L'utilisateur soumet des données 2. Linq to sql L'objet produit est créé et rempli avec les données et envoyé. 3. cet objet contient maintenant le ProductId 4. Un autre objet linq to sql est créé pour la table de revue de produit et est inséré (l'identifiant de produit de l'étape 3 est envoyé).
Chemin de masse. 1. L'utilisateur saisit les données d'un utilisateur partageant les données. 2. Toutes les lignes Product de l'utilisateur de partage sont saisies. 3. L'insertion de copie SQL en bloc sur les lignes de produits a lieu. 4. Mon SP sélectionne toutes les lignes qui existent uniquement dans la table Produit et qui remplissent d'autres conditions. 5. L'insertion de masse se produit avec ces lignes. Donc, que se passe-t-il si l'étape 3 (façon manuelle) se produit en même temps que l'étape 4 (chemin de masse). Je pense qu'il essayerait d'insérer deux fois la même ligne provoquant une contrainte primaire d'exécution.
Qu'est-ce qui lie les tables en coup droit? –