Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyzwalacz Oracle ORA-04098:wyzwalacz jest nieprawidłowy i nie powiodła się ponowna weryfikacja

Oracle spróbuje ponownie skompilować niepoprawne obiekty, do których się odnoszą. Tutaj wyzwalacz jest nieprawidłowy i za każdym razem, gdy próbujesz wstawić wiersz, spróbuje on ponownie skompilować wyzwalacz i zakończy się niepowodzeniem, co prowadzi do błędu ORA-04098.

Możesz select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' aby zobaczyć, jakie błędy faktycznie otrzymuje wyzwalacz i dlaczego się nie kompiluje. W tym przypadku wygląda na to, że brakuje średnika na końcu insert linia:

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

Więc zrób to:

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

Jeśli otrzymasz ostrzeżenie kompilacji, gdy to zrobisz, możesz zrobić show errors jeśli korzystasz z SQL*Plus lub SQL Developer, lub zapytaj user_errors ponownie.

Oczywiście zakłada to, że Twoi Users tabele mają te nazwy kolumn i wszystkie są varchar2 ... ale prawdopodobnie naprawdę zrobisz coś ciekawszego z wyzwalaczem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trzeba zresetować wartość sekwencji w Oracle

  2. Jak dodać pionowe obramowania do siatki wyjściowej SQL*Plus / SQLcl?

  3. Przekazywanie tablicy danych jako parametru wejściowego do procedury Oracle

  4. Jak napisać skrypt wstawiania oracle z jednym polem jako CLOB?

  5. oracle — Podziel wiele wartości oddzielonych przecinkami w tabeli Oracle na wiele wierszy