I en UPDATE TRIGGER
, kan du använda OLD nyckelord för att komma åt raddata som ersätts av uppdateringen. Den NEW nyckelordet tillåter åtkomst till inkommande raddata som kommer att ersätta den gamla raden, om den lyckas.
Ett exempel på en UPDATE utlösaren är:
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 här
Beroende på vilken typ av trigger som skapats, OLD och NEW rader kanske inte är tillgängliga för dig:
INSERT TRIGGER
- Åtkomst till
NEWEndast pseudo-rader.
UPPDATERA TRIGGER
- Åtkomst till
NEWochOLDpseudo-rader
RADERA TRIGGER
- Endast åtkomst till
OLDpseudo-rader
d.v.s. det finns ingen OLD rad på en INSERT trigger och ingen NEW rad på en DELETE utlösare.
OP:s fråga
OP har inte tillhandahållit den faktiska koden och felmeddelandet som hänvisas till i kommentarerna:
indikerar att OP oavsiktligt hade skapat en INSERT TRIGGER och inte en UPDATE TRIGGER som angavs i frågan. En INSERT triggern har ingen OLD pseudotabell.