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

Få OLD Value i MySQL Trigger EFTER opdateringserklæring

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 og OLD 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.



  1. Fejl 1215:Kan ikke tilføje fremmednøglebegrænsning

  2. Enity Framework med MySQL

  3. Forespørgsel for at finde fremmednøgler

  4. Hvordan summeres værdier af en kolonne i SQL?