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.