INSERT
của bạn câu lệnh luôn chạy trong một giao dịch - bạn đã xác định rõ ràng một giao dịch hoặc nếu không, thì SQL Server sẽ sử dụng một giao dịch ngầm định.
Bạn đang chèn một (hoặc nhiều) hàng vào bảng của mình. Sau đó - vẫn bên trong giao dịch - AFTER INSERT
trình kích hoạt chạy và kiểm tra các điều kiện nhất định - thường sử dụng Inserted
bảng giả có sẵn bên trong trình kích hoạt, chứa các hàng đã được chèn.
Nếu bạn gọi ROLLBACK TRANSACTION
trong trình kích hoạt của bạn, sau đó có - giao dịch của bạn, với mọi thứ đang làm, được quay trở lại và nó như thể INSERT
đó không bao giờ xảy ra - không có gì hiển thị trong bảng cơ sở dữ liệu của bạn.
Ngoài ra:FOR INSERT
giống như AFTER INSERT
trong SQL Server - trình kích hoạt được thực thi sau INSERT
tuyên bố đã hoàn thành công việc của nó.
Một điều cần lưu ý (mà rất nhiều lập trình viên mắc sai lầm):trình kích hoạt được kích hoạt một lần cho mỗi câu lệnh - KHÔNG một lần mỗi hàng! Vì vậy, nếu bạn chèn 20 hàng cùng một lúc, trình kích hoạt sẽ được kích hoạt một lần và Inserted
bảng giả bên trong trình kích hoạt chứa 20 hàng. Bạn cần tính đến điều đó khi viết trình kích hoạt - bạn không luôn xử lý chỉ với một hàng được chèn vào!