Rate this post

Trigger trong SQL là một tính năng cho phép bạn đặt một sự kiện khi một hoạt động nhất định xảy ra trên một bảng cơ sở dữ liệu. Khi một sự kiện xảy ra, trigger sẽ chạy một mã SQL để tự động thực hiện các thao tác cần thiết trên dữ liệu hoặc cấu trúc cơ sở dữ liệu. Triggers có thể được sử dụng để bảo vệ dữ liệu, hoặc để tự động thực hiện các thao tác khi dữ liệu được thay đổi.

Các bài viết liên quan:

Khi nào ta nên sử dụng trigger

Trong SQL, trigger (còn gọi là cờ bắt sự kiện) là một đoạn mã tự động thực thi khi một sự kiện xảy ra trên bảng dữ liệu nhất định. Ví dụ như khi có một hành động insert, update hoặc delete dữ liệu từ một bảng, trigger sẽ tự động thực thi một số tác vụ liên quan, chẳng hạn như thêm dữ liệu vào một bảng khác hoặc gửi một email thông báo cho người quản lý.

Chúng ta nên sử dụng trigger khi muốn tự động hoá một số tác vụ liên quan đến dữ liệu mà không cần phải viết thủ công hoặc khi muốn tự động thực thi một số tác vụ khi có sự thay đổi trong dữ liệu.

Cú pháp của Trigger

Cú pháp của trigger trong SQL được viết như sau:

CREATE TRIGGER trigger_name
AFTER/BEFORE INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW
BEGIN
   -- trigger code
END;
  • trigger_name: Tên của trigger
  • AFTER/BEFORE: Xác định trigger sẽ chạy sau hoặc trước khi hoàn tất hoạt động INSERT/UPDATE/DELETE trên bảng.
  • ON table_name: Tên bảng mà trigger sẽ chạy.
  • FOR EACH ROW: Xác định rằng trigger sẽ chạy cho mỗi hàng mà hoạt động INSERT/UPDATE/DELETE đềuệt đến.
  • BEGIN: Bắt đầu với mã trigger
  • END;: Kết thúc mã trigger.

Ví dụ về trigger

Ví dụ về trigger trong SQL là tạo một trigger để theo dõi sự thay đổi trong bảng “Employees” và ghi lại những thay đổi này trong bảng “Employee_History”.

Cú pháp như sau:

CREATE TRIGGER tr_Employee_History
AFTER INSERT OR UPDATE OR DELETE
ON Employees
FOR EACH ROW
BEGIN
  IF (INSERTING) THEN
    INSERT INTO Employee_History (EmployeeID, Action, ActionDate)
    VALUES (NEW.EmployeeID, 'Insert', SYSDATE);
  ELSEIF (UPDATING) THEN
    INSERT INTO Employee_History (EmployeeID, Action, ActionDate)
    VALUES (OLD.EmployeeID, 'Update', SYSDATE);
  ELSE
    INSERT INTO Employee_History (EmployeeID, Action, ActionDate)
    VALUES (OLD.EmployeeID, 'Delete', SYSDATE);
  END IF;
END;

Trong đó, AFTER INSERT OR UPDATE OR DELETE xác định trigger sẽ được kích hoạt sau khi thực hiện một thao tác INSERT, UPDATE hoặc DELETE trên bảng Employees. FOR EACH ROW xác định trigger sẽ được kích hoạt cho mỗi dòng dữ liệu được thay đổi. Cuối cùng, các lệnh INSERT được thực hiện trong câu lệnh IF để ghi lại những thay đổi vào bảng Employee_History.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now