Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle Trigger ORA-04098:il trigger non è valido e la riconvalida non è riuscita

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.