Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle Trigger ORA-04098:тригерът е невалиден и неуспешно повторно валидиране

Oracle ще се опита да прекомпилира невалидни обекти, както са посочени. Тук тригерът е невалиден и всеки път, когато се опитате да вмъкнете ред, той ще се опита да прекомпилира тригера и ще се провали, което води до грешка ORA-04098.

Можете да select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' за да видите какви грешки(и) всъщност получава тригерът и защо не се компилира. В този случай изглежда, че ви липсва точка и запетая в края на insert ред:

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

Така че направете го:

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

Ако получите предупреждение за компилация, когато го направите, можете да направите show errors ако сте в SQL*Plus или SQL Developer, или подайте заявка user_errors отново.

Разбира се, това предполага вашите Users таблиците имат тези имена на колони и всички те са varchar2 ... но вероятно наистина ще правите нещо по-интересно със спусъка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Низ за връзка на Oracle без файл tnsnames.ora

  2. Дата на Oracle между заявката

  3. Издаден SQL Developer 4.1.3

  4. EF заявка към Oracle хвърля ORA-12704:несъответствие на набора от знаци

  5. Функция за ранг в MySQL с клауза Order By