В 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 псевдо таблица.