Mysql
 sql >> Database >  >> RDS >> Mysql

Ottieni VECCHIO valore in MySQL Trigger DOPO la dichiarazione di aggiornamento

In un UPDATE TRIGGER , puoi usare il OLD parola chiave per accedere ai dati della riga che vengono sostituiti dall'aggiornamento. Il NEW la parola chiave consente di accedere ai dati della riga in entrata che sostituiranno la vecchia riga, in caso di esito positivo.

Un esempio di UPDATE il trigger è:

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 qui

A seconda del tipo di attivatore creato, il OLD e NEW le righe potrebbero non essere disponibili per te:

INSERIRE TRIGGER

  • Accesso al NEW solo pseudo righe.

TRIGGER DI AGGIORNAMENTO

  • Accesso al NEW e OLD pseudorighe

ELIMINA TRIGGER

  • Accesso solo al OLD pseudorighe

cioè non c'è OLD riga su un INSERT trigger e nessun NEW riga su un DELETE trigger.

Domanda di OP

OP non ha fornito il codice effettivo e il messaggio di errore a cui si fa riferimento nei commenti:

indica che l'OP ha inavvertitamente creato un INSERT TRIGGER e non un UPDATE TRIGGER come indicato nella domanda. Un INSERT trigger non ha OLD pseudotabella.