Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server - Après insertion/Pour insertion - Restauration

Votre INSERT L'instruction s'exécute toujours dans une transaction - soit vous en avez explicitement défini une, soit sinon, SQL Server utilisera une transaction implicite.

Vous insérez une (ou plusieurs) ligne(s) dans votre tableau. Puis - toujours à l'intérieur de la transaction - le AFTER INSERT le déclencheur s'exécute et vérifie certaines conditions - généralement en utilisant le Inserted pseudo table disponible à l'intérieur du déclencheur, qui contient les lignes qui ont été insérées.

Si vous appelez ROLLBACK TRANSACTION dans votre déclencheur, alors oui - votre transaction, avec tout ce qu'elle a fait, est annulée et c'est comme si INSERT ne s'est jamais produit - rien n'apparaît dans votre table de base de données.

Aussi :FOR INSERT est identique à AFTER INSERT dans SQL Server - le déclencheur est exécuté après le INSERT déclaration a fait son travail.

Une chose à garder à l'esprit (que beaucoup de programmeurs se trompent) :le déclencheur est déclenché une fois par instruction - PAS une fois par rangée ! Ainsi, si vous insérez 20 lignes à la fois, le déclencheur est déclenché une fois et le Inserted la pseudo table à l'intérieur du déclencheur contient 20 lignes. Vous devez en tenir compte lors de l'écriture du déclencheur - vous n'êtes pas traitant toujours d'une seule ligne insérée !