Spróbuj użyć PRAGMA AUTONOMOUS_TRANSACTION w wyzwalaczu.
Dokument Oracle:https://docs.oracle.com/ cd/B14117_01/appdev.101/b10807/13_elems002.htm
CREATE OR REPLACE TRIGGER planes_del_trigg
BEFORE DELETE ON planes
DECLARE
CURSOR dist_cur IS
SELECT distance
FROM flights;
v_dist flights.distance%TYPE;
v_counter NUMBER(3);
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
OPEN dist_cur;
LOOP
FETCH dist_cur INTO v_dist;
IF v_dist <= :OLD.range THEN
v_counter := v_counter + 1;
END IF;
EXIT WHEN dist_cur%NOTFOUND;
END LOOP;
CLOSE dist_cur;
IF v_counter >= 3 THEN
RAISE_APPLICATION_ERROR(-20501, 'This plane cannot be deleted!');
END IF;
END planes_del_trigg;