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.