sql >> Databáze >  >> RDS >> Oracle

Oracle Trigger ORA-04098:Trigger je neplatný a opětovné ověření se nezdařilo

Oracle se pokusí znovu zkompilovat neplatné objekty, jak se na ně odkazuje. Zde je spouštěč neplatný a pokaždé, když se pokusíte vložit řádek, pokusí se spouštěč znovu zkompilovat a selže, což vede k chybě ORA-04098.

Můžete select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' abyste viděli, jakou chybu(y) trigger skutečně dostane a proč se nezkompiluje. V tomto případě se zdá, že na konci insert chybí středník řádek:

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

Tak to udělejte:

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;           
/

Pokud se při tom zobrazí upozornění na kompilaci, můžete show errors pokud jste v SQL*Plus nebo SQL Developer, nebo dotaz user_errors znovu.

Samozřejmě to předpokládá vaše Users tabulky mají tyto názvy sloupců a všechny jsou varchar2 ... ale pravděpodobně budete se spouští opravdu dělat něco zajímavějšího.



  1. Jak zobrazit řazení sloupce v SQL Server (T-SQL)

  2. Jak automaticky vygenerovat jedinečné ID v SQL, jako je UID12345678?

  3. Android SQLite uzavřená výjimka

  4. SQL Server COALESCE() Vysvětleno