MySQL trigger syntax

Lưu bài yêu thích

MySQL trigger syntax

Cú pháp kích hoạt MySQL 

Để tạo trình kích hoạt mới, bạn sử dụng câu lệnh CREATE TRIGGER. Phần sau minh họa cú pháp của câu lệnh CREATE TRIGGER:

CREATE TRIGGER trigger_name trigger_time trigger_event
 ON table_name
 FOR EACH ROW
 BEGIN
 ...
 END;

 

Hãy xem xét cú pháp ở trên chi tiết hơn.

Bạn đặt tên trình kích hoạt sau câu lệnh CREATE TRIGGER. THE trigger hoạt phải tuân theo quy ước đặt tên [trigger time]_[table name]_[trigger event] , ví dụ before_employees_update.

Thời gian kích hoạt kích hoạt có thể BEFORE hoặc AFTER. Bạn phải chỉ định thời gian kích hoạt khi bạn xác định trình kích hoạt. Bạn sử dụng từ khóa BEFORE nếu bạn muốn xử lý hành động trước khi thay đổi được thực hiện trên bảng và AFTER nếu bạn cần xử lý hành động sau khi thay đổi được thực hiện.
Sự kiện kích hoạt có thể là INSERT, UPDATE hoặc DELETE. Sự kiện này làm cho trình kích hoạt được gọi. Trình kích hoạt chỉ có thể được gọi bởi một sự kiện. Để xác định trình kích hoạt được nhiều sự kiện gọi, bạn phải xác định nhiều trình kích hoạt, một trình kích hoạt cho từng sự kiện.

Trình kích hoạt phải được liên kết với một bảng cụ thể. Nếu không có trình kích hoạt bảng sẽ không tồn tại, do đó bạn phải chỉ định tên bảng sau từ khóa ON.

Bạn đặt các câu lệnh SQL giữa khối BEGIN và END. Đây là nơi bạn xác định logic cho trình kích hoạt.
Bên trong phần thân của trigger, chúng ta sử dụng từ khóa OLD để truy cập cột employeeNumber và lastname của hàng bị ảnh hưởng bởi trigger.

Lưu ý rằng trong trình kích hoạt được xác định cho INSERT, bạn chỉ có thể sử dụng từ khóa NEW. Bạn không thể sử dụng từ khóa OLD. Tuy nhiên, trong trình kích hoạt được xác định cho DELETE, không có hàng mới để bạn chỉ có thể sử dụng từ khóa OLD. Trong trình kích hoạt UPDATE, OLD tham chiếu đến hàng trước khi nó được cập nhật và NEW đề cập đến hàng sau khi nó được cập nhật.

DELIMITER $$
CREATE TRIGGER before_employee_update 
    BEFORE UPDATE ON employees
    FOR EACH ROW 
BEGIN
    INSERT INTO employees_audit
    SET action = 'update',
     employeeNumber = OLD.employeeNumber,
        lastname = OLD.lastname,
        changedat = NOW(); 
END$$
DELIMITER ;

Sau đó, để xem tất cả các trình kích hoạt trong cơ sở dữ liệu hiện tại, bạn sử dụng câu lệnh SHOW TRIGGERS như sau:
SHOW TRIGGERS;

Ví dụ: backup dữ liệu sau khi xoá

CREATE TRIGGER `article_backup` BEFORE DELETE ON `article`
 FOR EACH ROW INSERT INTO article_bk SELECT *, NOW()
FROM article
WHERE id = old.id

Chia sẽ bài viết:

0 Cảm nhận

Để lại Cảm nhận

Copyrights © 2024 Bản quyền onlinetinhyeu.com