Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL тригер при изтриване на променяща се таблица

Опитайте да използвате PRAGMA AUTONOMOUS_TRANSACTION в тригера.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кой буркан на уеблогичен сървър/други ресурси би могъл да има клас:oracle.security.jps.ee.http.JpsFilter?

  2. Оракул с подзаявка

  3. Последователности на Oracle:CURRVAL не е разрешен тук?

  4. Oracle заявка за намиране на низ, който не съдържа знаци

  5. ORA-28001:Паролата е изтекла