Oracle zal proberen ongeldige objecten, zoals ze worden genoemd, opnieuw te compileren. Hier is de trigger ongeldig, en elke keer dat u een rij probeert in te voegen, wordt geprobeerd de trigger opnieuw te compileren, wat mislukt, wat leidt tot de ORA-04098-fout.
U kunt select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'
om te zien welke fout(en) de trigger daadwerkelijk krijgt en waarom deze niet compileert. In dit geval lijkt het erop dat u een puntkomma mist aan het einde van de insert
regel:
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')
Dus maak het:
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;
/
Als je een compilatiewaarschuwing krijgt wanneer je dat doet, kun je show errors
als u in SQL*Plus of SQL Developer werkt, of user_errors
. opvraagt nogmaals.
Dit veronderstelt natuurlijk uw Users
tabellen hebben die kolomnamen, en ze zijn allemaal varchar2
... maar vermoedelijk doe je in werkelijkheid iets interessanters met de trigger.