Oracle vil forsøge at genkompilere ugyldige objekter, som de omtales. Her er triggeren ugyldig, og hver gang du forsøger at indsætte en række, vil den forsøge at rekompilere triggeren og mislykkes, hvilket fører til ORA-04098 fejlen.
Du kan select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'
for at se, hvilken eller hvilke fejl triggeren rent faktisk får, og hvorfor den ikke vil kompilere. I dette tilfælde ser det ud til, at du mangler et semikolon i slutningen af insert
linje:
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')
Så lav det:
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;
/
Hvis du får en kompileringsadvarsel, når du gør det, kan du show errors
hvis du er i SQL*Plus eller SQL Developer, eller forespørg user_errors
igen.
Dette forudsætter selvfølgelig dine Users
tabeller har disse kolonnenavne, og de er alle varchar2
... men formentlig vil du gøre noget mere interessant med aftrækkeren i virkeligheden.