sql >> データベース >  >> RDS >> Oracle

変更テーブルの削除時のSQLトリガー

    トリガーでPRAGMAAUTONOMOUS_TRANSACTIONを使用してみてください。

    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. Djangoの特異性

    2. 2番目のテーブルのフィルター条件を使用したOracle外部結合

    3. BLOBを除くすべてのフィールドでSELECTDISTINCTを実行するにはどうすればよいですか?

    4. PhP Mysqlの使用方法は適切にインクルードし、ヘッダーエラーを回避します