Oracle-Trigger-ORA-04098: trigger ungültig ist und gescheiterten re-Validierung
Ich bin versucht, zu erstellen eine einfache trigger in einer oracle 10g Datenbank. Dieses Skript zum Erstellen der trigger läuft sauber.
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;
/
Aber wenn ich laufen:
INSERT INTO Alerts(observationID, dateSent, message, dateViewed) VALUES (3, CURRENT_TIMESTAMP, 'Alert: You have exceeded the Max Threshold', NULL);
aktivieren Sie die trigger, bekomme ich diese Fehlermeldung:
ORA-04098: trigger - 'JMD.NEWALERT' ist ungültig und gescheiterten re-Validierung
(0 rows affected)
Ich verstehe nicht, was diesen Fehler verursacht. Wissen Sie, was diesen Fehler verursacht? Oder warum ist das passiert?
Vielen Dank im Voraus!
-David
Auch ich habe
was ist deine Tabellenstruktur für
INSERT INTO Users (userID, firstName, lastName, password) VALUES ('how', 'im', 'testing', 'this trigger')
und es funktioniert gut.was ist deine Tabellenstruktur für
Users
und Alerts
Tabellen?
InformationsquelleAutor user3412162 | 2014-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oracle wird versuchen, zu Rekompilieren von ungültigen Objekten, wie Sie bezeichnet werden. Hier der trigger ungültig ist, und jedes mal, wenn Sie versuchen, eine Zeile einfügen, wird es versuchen, kompilieren Sie den Auslöser, und nicht, was dazu führt, ORA-04098 Fehler.
Können Sie
select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'
um zu sehen, welche Fehlermeldung(en) der trigger tatsächlich bekommt und warum es nicht kompiliert. In diesem Fall erscheint es Ihnen fehlt ein Semikolon am Ende derinsert
Linie:So machen:
Wenn man eine Compilerwarnung, wenn Sie tun, dass Sie tun können
show errors
wenn Sie in SQL*Plus oder SQL Developer oder Abfrageuser_errors
wieder.Natürlich, dies setzt Voraus, Ihre
Users
Tabellen funktioniert diese Spalte Namen, und Sie sind allevarchar2
... aber vermutlich werden Sie etwas mehr interessant, mit dem auslösen wirklich.Ich wusste nicht, über die select-Klausel für trigger-Fehler, +1 für uns, und auch Sie können ausführen
SHOW ERRORS TRIGGER trigger_name;
für check-Fehler auf der trigger-definition techonthenet.com/oracle/errors/ora04098.phpInformationsquelleAutor Alex Poole
Ursache: Ein Auslöser war, versuchte abgerufen werden, die für die Ausführung und wurde für ungültig erklärt werden. Dies bedeutet auch, dass die Zusammenstellung bzw. die Autorisierung fehlgeschlagen für den Auslöser.
Handlung: die Optionen sind zu beheben, die Zusammenstellung/authorization Fehler, deaktivieren Sie den trigger, oder den trigger löschen.
Syntax
InformationsquelleAutor Kiran.Bakwad
in meinem Fall, dieser Fehler wird ausgelöst, aufgrund von Sequenz wurde nicht erstellt..
InformationsquelleAutor Siva Anand