Ich schrieb einen DB-Trigger, um eine Einfügeaktion zu überwachen. Nach dem Einfügen eines neuen Datensatzes möchte ich automatisch CREATION_DATE
auf sysdate
setzen.Wie löst man den Oracle DB Triggerfehler?
Ich erhalte eine Fehlermeldung, wenn ich einen neuen Datensatz eingefügt werden soll:
Fehler
ORA-04091: Tabelle REPORT mutiert, Trigger/Funktion kann nicht sieht es
ORA-06512: bei "CREATION_DATE_TEST", Zeile 2
ORA-04088: Fehler bei der Ausführung der Trigger 'CREATION_DATE_TEST'
My-Code:
CREATE OR REPLACE TRIGGER creation_date_test
AFTER INSERT ON REPORT FOR EACH ROW
BEGIN
UPDATE REPORT set CREATION_DATE = sysdate
WHERE ROWID = :new.ROWID;
END;
Ich habe auch versucht, ROWID = :new.ROWID
durch PROJECT_ID = new.PROJECT_ID
zu ersetzen. Es löst denselben Fehler aus.
Dank soviel setzt! Ihre Antwort ist wirklich hilfreich !! –
@deli - Ist 'creation_date' ein' varchar2' anstatt ein 'date', wie der Name implizieren würde? Ich würde nicht erwarten, dass in dem von mir geposteten Code irgendwelche Strings verwendet werden. –
Ich habe den Datentyp jetzt geändert. Vielen Dank !! –