Oracle kommer att försöka kompilera om ogiltiga objekt som de hänvisas till. Här är triggern ogiltig, och varje gång du försöker infoga en rad kommer den att försöka kompilera om triggern och misslyckas, vilket leder till ORA-04098-felet.
Du kan select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'
för att se vilka fel som utlösaren faktiskt får och varför den inte kompilerar. I det här fallet verkar det som att du saknar ett semikolon i slutet av insert
rad:
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')
Så gör 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;
/
Om du får en kompileringsvarning när du gör det kan du show errors
om du använder SQL*Plus eller SQL Developer, eller frågar user_errors
igen.
Naturligtvis förutsätter detta dina Users
Tabeller har dessa kolumnnamn, och de är alla varchar2
... men förmodligen kommer du att göra något mer intressant med avtryckaren egentligen.