2011-07-14 6 views
1

Par exemple: pour obtenir les valeurs pour créer un déclencheur qui ont été transmis avec la commande INSERT, il peut y faire:Comment obtenir les valeurs qui ont été mises à jour?

SELECT @pid=Product_ID, @q=Item_Quantity, @invid=Invoice_ID FROM Inserted 

Alors, j'avoir accès aux valeurs qui ont été transmises avec la commande INSERT utilisez-les dans SQL Server dans mon déclencheur. Quel serait l'équivalent pour les commandes UPDATE? Comment puis-je obtenir les valeurs que je vais passer de mon programme à SQL Server via les commandes UPDATE? Quelque chose comme ci-dessous me donne une erreur:

SELECT @pid=Product_ID, @q=Item_Quantity, @invid=Invoice_ID FROM Updated 
+1

Si vous avez des déclencheurs et que vous tentez d'une manière ou d'une autre de définir des valeurs pour une variable scalaire, vous devez procéder à une nouvelle conception. les déclencheurs du serveur SQl fonctionnent sur des groupes d'enregistrements, pas un à la fois. Vous devez réécrire tous les déclencheurs existants maintenant que vous pouvez créer un désordre d'intégrité des données. – HLGEM

Répondre

0

Vous devez utiliser pour savoir ce qui est mis à jour la combinaison de inserted et deleted. Pour chaque ligne mise à jour, les valeurs d'origine apparaîtront dans Supprimé et les nouvelles valeurs seront insérées. Donc, si vous voulez juste obtenir les nouvelles valeurs de votre UPDATE, vous pouvez utiliser la même requête que celle utilisée pour INSERT.

+0

Merci. Ça a marché! – nummer31

+0

Partiellement vrai, sauf que le code original est déjà défectueux. – HLGEM

+0

@ nummer31, assurez-vous de tester avec une mise à jour qui met à jour plusieurs enregistrements. – HLGEM

Questions connexes