Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Trigger ORA-04098:Trigger ist ungültig und Neuvalidierung fehlgeschlagen

Oracle versucht, ungültige Objekte neu zu kompilieren, wie auf sie verwiesen wird. Hier ist der Trigger ungültig, und jedes Mal, wenn Sie versuchen, eine Zeile einzufügen, versucht er, den Trigger neu zu kompilieren, und schlägt fehl, was zum Fehler ORA-04098 führt.

Sie können select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' um zu sehen, welche Fehler der Trigger tatsächlich bekommt und warum er nicht kompiliert wird. In diesem Fall scheint Ihnen ein Semikolon am Ende des insert zu fehlen Zeile:

INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')

Also machen Sie es:

CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
  BEGIN
        INSERT INTO Users (userID, firstName, lastName, password)
        VALUES ('how', 'im', 'testing', 'this trigger');
  END;           
/

Wenn Sie dabei eine Kompilierungswarnung erhalten, können Sie show errors tun wenn Sie sich in SQL*Plus oder SQL Developer befinden, oder user_errors abfragen nochmal.

Dies setzt natürlich Ihre Users voraus Tabellen haben diese Spaltennamen, und sie sind alle varchar2 ... aber vermutlich machst du mit dem Trigger wirklich etwas Interessanteres.