PORADY PRAKTYCZNE

Data:    2014-09-18 13:27:16
Temat:    ORA-04098: wyzwalacz 'FN.T_KOMU' jest niepoprawny...
Załączniki:    brak
Treść:   

Komunikat błędu:

…

ORA-04098: wyzwalacz 'FN.T_KOMU' jest niepoprawny; ponowne sprawdzenie poprawności  nie powiodło się

…

Prawdopodobnie uszkodzeniu uległ wyzwalacz lub sekwencja.

…

1. Wyzwalacz T_KOMU powinien wyglądać w następujący sposób - należy zweryfikować jego źródło:

…
…

CREATE OR REPLACE TRIGGER T_KOMU BEFORE INSERT ON KOMU FOR EACH ROW
BEGIN IF :NEW.ID IS NULL OR :NEW.ID=0 THEN SELECT ID_KOMU.NextVal INTO :NEW.ID FROM DUAL; END IF; END;

…

Jeżeli treść jest zgodna, należy dokonac próby kompilacji wyzwalacz, np. za pomocą programu Dolphin czy Orbada, lub wykonać polecenie:

…
…

alter TRIGGER T_KOMU compile;

…

2. Jeżeli pomimo poprawnej treści skompilowanie nie jest możliwe, należy sprawdzić czy w bazie danych istnieje sekwencja ID_KOMU.
Jeżeli nie, konieczne jest jej założenie z odpowiednią wartością startową.

…
…

CREATE SEQUENCE ID_KOMU
MINVALUE 1
START WITH xxx
INCREMENT BY 1
NOCACHE;

…

W miejsce xxx należy wstawić najwyższą wartość +1 jaka istnieje w kolumnie ID w tabeli KOMU.

…

Całą operacje należy zatwierdzić COMMIT.

…

Przed jakimikolwiek pracami na bazie danych zaleca się wykonanie kopi bezpieczeństwa.


Powrót