I en UPDATE TRIGGER
, kan du bruge den OLD nøgleord for at få adgang til rækkedata, som erstattes af opdateringen. Den NEW søgeord giver adgang til de indgående rækkedata, som erstatter den gamle række, hvis det lykkes.
Et eksempel på en UPDATE trigger er:
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 her
Afhængigt af typen af udløser, der er oprettet, er OLD og NEW rækker er muligvis ikke tilgængelige for dig:
INDSÆT TRIGGER
- Adgang til
NEWKun pseudo-rækker.
OPDATERING TRIGGER
- Adgang til
NEWogOLDpseudo-rækker
SLET TRIGGER
- Kun adgang til den
OLDpseudo-rækker
dvs. der er ingen OLD række på en INSERT trigger og ingen NEW række på en DELETE trigger.
OP's spørgsmål
OP har ikke givet den faktiske kode og fejlmeddelelsen, der henvises til i kommentarerne:
angiver, at OP'en utilsigtet havde oprettet en INSERT TRIGGER og ikke en UPDATE TRIGGER som anført i spørgsmålet. En INSERT trigger har ingen OLD pseudo-tabel.