Trong một UPDATE TRIGGER
, bạn có thể sử dụng OLD từ khóa để truy cập dữ liệu hàng đang được thay thế bởi bản cập nhật. NEW từ khóa cho phép truy cập dữ liệu hàng đến sẽ thay thế hàng cũ, nếu thành công.
Ví dụ về UPDATE kích hoạt là:
CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
FOR EACH ROW
BEGIN
IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
INSERT INTO AuditSomeTable(ID, LastChangedBy)
VALUES (OLD.ID, OLD.LastChangedBy);
END IF;
END;
SQLFiddle đây
Tùy thuộc vào loại trình kích hoạt được tạo, OLD và NEW các hàng có thể không có sẵn cho bạn:
CHÈN TRIGGER
- Truy cập vào
NEWchỉ hàng giả.
CẬP NHẬT TRIGGER
- Truy cập vào
NEWvàOLDhàng giả
XÓA TRIGGER
- Chỉ truy cập vào
OLDhàng giả
tức là không có OLD hàng trên một INSERT kích hoạt và không có NEW hàng trên DELETE kích hoạt.
Câu hỏi của OP
OP đã không cung cấp mã thực và thông báo lỗi được đề cập trong các nhận xét:
chỉ ra rằng OP đã vô tình tạo một INSERT TRIGGER và không phải là UPDATE TRIGGER như đã được chỉ ra trong câu hỏi. INSERT trình kích hoạt không có OLD bảng giả.