В UPDATE TRIGGER
, можете да използвате OLD
ключова дума за достъп до данните в реда, които се заменят от актуализацията. NEW
ключова дума позволява достъп до входящите данни за ред, които ще замени стария ред, ако е успешен.
Пример за UPDATE
тригерът е:
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;
SQLPiddle тук
В зависимост от типа на създадения тригер, OLD
и NEW
редовете може да не са достъпни за вас:
ВМЪКНЕТЕ ЗАПУСКВАНЕ
- Достъп до
NEW
само псевдоредове.
ЗАПУСКВАНЕ НА АКТУАЛИЗИРАНЕ
- Достъп до
NEW
иOLD
псевдоредове
ИЗТРИВАНЕ НА ТРИГЕРА
- Достъп само до
OLD
псевдоредове
т.е. няма OLD
ред на INSERT
тригер и няма NEW
ред на DELETE
задействане.
Въпрос на ОП
OP не е предоставил действителния код и съобщението за грешка, посочено в коментарите:
показва, че ОП неволно е създал INSERT TRIGGER
а не UPDATE TRIGGER
както беше посочено във въпроса. INSERT
тригерът няма OLD
псевдо таблица.