Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Kích hoạt SQL trên xóa bảng đột biến

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle chuyển đổi thời gian kỷ nguyên unix sang ngày

  2. Tách các giá trị được phân tách bằng dấu phẩy của một cột trong hàng, thông qua truy vấn SQL Oracle

  3. Mã hóa bảo mật nâng cao Oracle với cấu hình xml Spring JDBC

  4. Oracle TNS vấn đề?

  5. Tại sao một biến oracle plsql varchar2 cần một kích thước nhưng một tham số thì không?