sql >> Database >  >> RDS >> Mysql

Krijg OUDE waarde in MySQL-trigger NA updateverklaring

In een UPDATE TRIGGER , kunt u de OLD sleutelwoord om toegang te krijgen tot de rijgegevens die worden vervangen door de update. De NEW trefwoord geeft toegang tot de inkomende rijgegevens die de oude rij zullen vervangen, indien succesvol.

Een voorbeeld van een UPDATE trigger is:

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

Afhankelijk van het type trigger dat is gemaakt, wordt de OLD en NEW rijen zijn mogelijk niet voor u beschikbaar:

VOER TRIGGER IN

  • Toegang tot de NEW alleen pseudorijen.

UPDATE TRIGGER

  • Toegang tot de NEW en OLD pseudorijen

TRIGGER VERWIJDEREN

  • Alleen toegang tot de OLD pseudorijen

d.w.z. er is geen OLD rij op een INSERT trigger, en geen NEW rij op een DELETE trigger.

Vraag van OP

OP heeft niet de daadwerkelijke code verstrekt en de foutmelding waarnaar wordt verwezen in de opmerkingen:

geeft aan dat de OP per ongeluk een INSERT TRIGGER . heeft gemaakt en niet een UPDATE TRIGGER zoals aangegeven in de vraag. Een INSERT trigger heeft geen OLD pseudo-tabel.



  1. Hoe krijg ik gegenereerde sleutels van JDBC batch-insert in Oracle?

  2. Hoe SESSION_CONTEXT() werkt in SQL Server

  3. Een overzicht van de nieuwe DBaaS van MariaDB - SkySQL

  4. Redenen om te upgraden naar SQL Server 2017