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 !