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
NEW
Endast pseudo-rader.
UPPDATERA TRIGGER
- Åtkomst till
NEW
ochOLD
pseudo-rader
RADERA TRIGGER
- Endast åtkomst till
OLD
pseudo-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.