Oracle essaiera de recompiler les objets invalides tels qu'ils sont référencés. Ici, le déclencheur n'est pas valide et chaque fois que vous essayez d'insérer une ligne, il essaie de recompiler le déclencheur et échoue, ce qui entraîne l'erreur ORA-04098.
Vous pouvez select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT'
pour voir quelle(s) erreur(s) le déclencheur obtient réellement et pourquoi il ne se compile pas. Dans ce cas, il semble qu'il vous manque un point-virgule à la fin de insert
ligne :
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')
Alors faites-le :
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;
/
Si vous obtenez un avertissement de compilation lorsque vous faites cela, vous pouvez faire show errors
si vous êtes dans SQL*Plus ou SQL Developer, ou interrogez user_errors
à nouveau.
Bien sûr, cela suppose vos Users
les tables ont ces noms de colonnes, et elles sont toutes varchar2
... mais vous ferez probablement quelque chose de plus intéressant avec le déclencheur.