W UPDATE TRIGGER
, możesz użyć OLD
słowo kluczowe, aby uzyskać dostęp do danych wiersza, które są zastępowane przez aktualizację. NEW
słowo kluczowe umożliwia dostęp do przychodzących danych wierszy, które zastąpią stary wiersz, jeśli się powiedzie.
Przykład UPDATE
wyzwalacz to:
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 tutaj
W zależności od typu utworzonego wyzwalacza, OLD
i NEW
wiersze mogą być dla Ciebie niedostępne:
WSTAW SPUST
- Dostęp do
NEW
tylko pseudo wiersze.
AKTUALIZUJ AKTUALIZACJĘ
- Dostęp do
NEW
iOLD
pseudo rzędy
USUŃ SPUST
- Dostęp tylko do
OLD
pseudo rzędy
tzn. nie ma OLD
wiersz na INSERT
wyzwalacz i brak NEW
wiersz na DELETE
wyzwalacz.
Pytanie OP
OP nie podał rzeczywistego kodu i komunikatu o błędzie, o którym mowa w komentarzach:
wskazuje, że OP nieumyślnie utworzył INSERT TRIGGER
a nie UPDATE TRIGGER
jak wskazano w pytaniu. INSERT
wyzwalacz nie ma OLD
pseudotabela.