Posiadam jeszcze jeden problem z triggerem, a mianowicie chciałbym, żeby przy usuwaniu klienta wywołał się trigger, który usunie wszystkie wiersze z nim związane w dwóch kolejnych tabelach. Sam DELETE działa poprawnie, jednak w triggerze nie chce się skompilować. W czym jest problem?
CREATE OR REPLACE TRIGGER TR3_USUWANIE
BEFORE DELETE ON KLIENT
REFERENCING new AS new old AS old
FOR EACH ROW
BEGIN
DELETE FROM POZYCJA
WHERE POZYCJA.ID_Z IN
(
SELECT DISTINCT P.ID_Z
FROM KLIENT K, ZAMOWIENIE Z, POZYCJA P
WHERE P.ID_Z = Z.ID_Z AND Z.ID_K = K.ID_K AND old.ID_K = K.ID_K
);
DELETE FROM ZAMOWIENIE
WHERE ZAMOWIENIE.ID_Z IN
(
SELECT DISTINCT Z.ID_Z
FROM KLIENT K, ZAMOWIENIE Z
WHERE Z.ID_K = K.ID_K AND old.ID_K = K.ID_K
);
END;