Oracle proverà a ricompilare gli oggetti non validi come vengono indicati. Qui il trigger non è valido e ogni volta che tenti di inserire una riga, proverà a ricompilare il trigger e fallisce, il che porta all'errore ORA-04098.
Puoi select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'
per vedere quali errori ottiene effettivamente il trigger e perché non verrà compilato. In questo caso sembra che manchi un punto e virgola alla fine di insert
riga:
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')
Quindi fallo:
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;
/
Se ricevi un avviso di compilazione quando lo fai, puoi fare show errors
se sei in SQL*Plus o SQL Developer, oppure esegui una query su user_errors
di nuovo.
Ovviamente, questo presuppone i tuoi Users
le tabelle hanno quei nomi di colonna e sono tutti varchar2
... ma presumibilmente farai davvero qualcosa di più interessante con il grilletto.