Dobra, myślę, że rozumiem, co się dzieje. Odpowiedź na twoje pytanie to zdecydowanie tak . Może to mieć duży wpływ, jeśli wyłączysz ten wyzwalacz.
Powodem, dla którego ten wyzwalacz wydaje się istnieć, jest radzenie sobie z sytuacją, w której wartość klucza podstawowego nie dostarczone na wkładce do twojego stołu. Jeśli zdarzy się to wszędzie w twoim kodzie usunięcie wyzwalacza spowoduje uszkodzenie tych wstawek.
Musisz zrobić dwie rzeczy.
-
Popraw spust, najwyraźniej jest zepsuty; napraw to:
CREATE OR REPLACE TRIGGER BI_PRIVILEGE before insert on PRIVILEGE for each row begin if :NEW.PRIVILEGE_ID is null then select PRIVILEGE_SEQ.nextval into :NEW.PRIVILEGE_ID from dual; end if; end;
Jeśli używasz Oracle 11G lub nowszego, możesz użyć tego zamiast:
if :NEW.PRIVILEGE_ID is null then :NEW.PRIVILEGE_ID := PRIVILEGE_SEQ.nextval; end if;
-
Sprawdź, czy tak się rzeczywiście dzieje. Jeśli wstawiasz rekordy bez klucza podstawowego, musisz dowiedzieć się, dlaczego tak się dzieje i czy zachowanie jest prawidłowe. Jeśli tak, utknąłeś na spuście, w przeciwnym razie napraw to. Jeśli nigdy nie wstawisz rekordów bez klucza podstawowego, możesz wyłączyć wyzwalacz.
Najszybszym sposobem na sprawdzenie może być wyłączenie wyzwalacza i tak, ale złamałoby to twoje wstawki. Jeśli jest to produkcyjna baza danych, tylko Ty możesz stwierdzić, czy jest tego warta. Osobiście nie.