SQL Server: Trigger AFTER

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Trigger AFTER

Trigger AFTER được thực thi khi hoàn thành các hoạt động INSERT, UPDATE và DELETE. Trigger AFTER chỉ có thể được tạo ra trên các bảng. Bảng có thể có nhiều loại trigger này được định nghĩa cho mỗi hành động. Nếu có nhiều trigger AFTER được tạo ra trên cùng một bảng thì người dùng phải định nghĩa thứ tự thực thi cho các trigger này. Trigger AFTER được thực thi khi kiểm tra ràng buộc trong bảng đã hoàn tất. Ngoài ra, trigger được thực thi sau khi các bảng Inserted và Deleted được tạo ra. Hình dưới đây thể hiện các loại trigger AFTER.

sql: Trigger After

Sau đây là cú pháp cho việc tạo ra trigger AFTER:

CREATE TRIGGER <trigger_name>
ON <table_name>
[WITH ENCRYPTION]
{ AFTER }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
AS <sql_statement>

, trong đó:

AFTER: chỉ ra rằng trigger DML thực thi sau khi các hoạt động sửa đổi được hoàn tất.

{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }: chỉ ra những hoạt động gọi trigger.

Đoạn mã sau tạo ra một trigger AFTER DELETE trên bảng EmployeeDetails. Nếu có bất kỳ bản ghi nhân viên nào bị xóa khỏi bảng thì trigger AFTER DELETE sẽ được kích hoạt. Trigger sẽ hiển thị số lượng bản ghi nhân viên đã xóa khỏi bảng này.

CREATE TRIGGER Employee_Deletion
ON EmployeeDetails
AFTER DELETE
AS
BEGIN
DECLARE @num nchar;
SELECT @num = COUNT(*) FROM deleted
PRINT N'Số lượng nhân viên đã xóa = ' + @num
END

Đoạn mã dưới đây sẽ xóa một bản ghi khỏi bảng EmployeeDetails.

DELETE FROM EmployeeDetails WHERE EmployeeID='E07'

Thông báo lỗi sau được hiển thị:

Số lượng nhân viên đã xóa = 0

» Tiếp: Trigger INSTEAD OF
« Trước: Tạo các trigger DML
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!