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
NEW
chỉ hàng giả.
CẬP NHẬT TRIGGER
- Truy cập vào
NEW
vàOLD
hàng giả
XÓA TRIGGER
- Chỉ truy cập vào
OLD
hà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ả.