Hãy thử sử dụng PRAGMA AUTONOMOUS_TRANSACTION trong trình kích hoạt.
Tài liệu 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;