sql >> Databáze >  >> RDS >> Oracle

Spouštěč SQL při odstranění mutující tabulky

Zkuste použít PRAGMA AUTONOMOUS_TRANSACTION ve spouštěči.

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;



  1. mysql získá rozdíl místo SUM

  2. Jak zkontrolovat, zda je datum a čas náhodou sobota nebo neděle v SQL Server 2008

  3. Hibernate mysql čć

  4. Pomoc při výpočtu komplexního součtu v hierarchické datové sadě