sql >> Database teknologi >  >> RDS >> Oracle

SQL-trigger ved sletning af muterende tabel

Prøv at bruge PRAGMA AUTONOMOUS_TRANSACTION i triggeren.

Oracle doc: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. CAST til DECIMAL i MySQL

  2. kan ikke gemme flere borde i cakephp

  3. Er ora_hash deterministisk?

  4. mysql:forbindelse afvist, når du forsøger at oprette forbindelse til localhost ved hjælp af ekstern IP