Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Holen Sie sich den ALTEN Wert in MySQL Trigger AFTER Update Statement

In einem UPDATE TRIGGER , können Sie den OLD verwenden Schlüsselwort, um auf die Zeilendaten zuzugreifen, die durch die Aktualisierung ersetzt werden. Das NEW Das Schlüsselwort ermöglicht den Zugriff auf die eingehenden Zeilendaten, die bei Erfolg die alte Zeile ersetzen.

Ein Beispiel für ein UPDATE Auslöser ist:

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 hier

Abhängig von der Art des erstellten Triggers wird der OLD und NEW Zeilen stehen Ihnen möglicherweise nicht zur Verfügung:

TRIGGER EINFÜGEN

  • Zugang zum NEW nur Pseudozeilen.

AKTUALISIERTER TRIGGER

  • Zugang zum NEW und OLD Pseudozeilen

TRIGGER LÖSCHEN

  • Zugriff nur auf den OLD Pseudozeilen

d.h. es gibt kein OLD Zeile auf einem INSERT Auslöser und kein NEW Zeile auf ein DELETE auslösen.

OPs Frage

OP hat den eigentlichen Code und die Fehlermeldung, auf die in den Kommentaren verwiesen wird, nicht bereitgestellt:

zeigt an, dass das OP versehentlich einen INSERT TRIGGER erstellt hat und kein UPDATE TRIGGER wie in der Frage angegeben. Ein INSERT Trigger hat kein OLD Pseudo-Tabelle.