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
NEW
Kun pseudo-rækker.
OPDATERING TRIGGER
- Adgang til
NEW
ogOLD
pseudo-rækker
SLET TRIGGER
- Kun adgang til den
OLD
pseudo-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.