Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server - After Insert / For Insert - Rollback

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 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!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng cơ sở dữ liệu bên trong một thủ tục được lưu trữ

  2. Một câu lệnh thực thi chèn không thể được lồng vào nhau

  3. Giới thiệu Tính năng mới - Báo cáo đám mây Spotlight

  4. Truy vấn SQL Server Xml với nhiều không gian tên

  5. Tương đương tốt nhất cho IsInteger trong SQL Server