sql >> Base de Datos >  >> RDS >> Oracle

Oracle Trigger ORA-04098:el activador no es válido y falló la revalidación

Oracle intentará volver a compilar los objetos no válidos a los que se hace referencia. Aquí, el disparador no es válido y cada vez que intente insertar una fila, intentará volver a compilar el disparador y fallará, lo que conduce al error ORA-04098.

Puede select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' para ver qué error(es) obtiene realmente el disparador y por qué no se compila. En este caso, parece que te falta un punto y coma al final de insert línea:

INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')

Así que hazlo:

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 recibe una advertencia de compilación cuando lo hace, puede hacer show errors si está en SQL*Plus o SQL Developer, o consulta user_errors de nuevo.

Por supuesto, esto supone que sus Users las tablas tienen esos nombres de columna, y todos son varchar2 ... pero presumiblemente estarás haciendo algo más interesante con el gatillo realmente.