Comment faire reference aux valeurs qui viennent d'être insérées (dans une instruction TRIGGER)?

CREATE TRIGGER ATTENDANCE_INSERTION_TRIGGER ON course_enrollment AFTER INSERT AS BEGIN --insert **what just was inserted in course_enrollment** into course_schedule_attendance END GO 

Comment faire reference à ce qui vient d'être inséré dans course_enrollment ?

essaye ça:

 CREATE TRIGGER ATTENDANCE_INSERTION_TRIGGER ON course_enrollment AFTER INSERT AS BEGIN --insert **what just was inserted in course_enrollment** into -- course_schedule_attendance INSERT course_schedule_attendance (course_id, student_id) SELECT course_id, student_id --you could use: INSERTED.course, INSERTED.student_id FROM INSERTED END GO 

vous pouvez également le faire dans un seul INSERT, sans le sortinggger:

 --insert a single row in both tables at one time INSERT course_enrollment (course_id, student_id) OUTPUT course_id, student_id INTO course_schedule_attendance VALUES (@xyz, @abc) --or insert a set of rows into both at one time INSERT course_enrollment (course_id, student_id) OUTPUT course_id, student_id INTO course_schedule_attendance SELECT xyz, abc FROM ... 

Vous pouvez get les valeurs de la table insérée

 SELECT * FROM INSERTED I 

Par exemple, si course_enrollment a un champ appelé course_id et student_id, pour get ces champs, vous pouvez faire un

 SELECT I.course_id,I.student_id FROM INSERTED I -- I is just an alias and is not needed but it helps 

Il existe deux méta-tables de triggersurs utiles, qui correspondent toutes deux au schéma de la table sur laquelle le triggersur est activé, INSERTED et DELETED.

Il est intéressant de noter que si vous exécutez une instruction de mise à jour, les tables de méta sortinggger auront des lignes dans INSERTED et DELETED, les lignes DELETED correspondant à "before the update" et INSERTED avec "after the update".

Cela le rend également utile à des fins d'audit.