Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyzwalacz SQL przy usuwaniu tabeli mutacji

Spróbuj użyć PRAGMA AUTONOMOUS_TRANSACTION w wyzwalaczu.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zresetuj sekwencję do określonej wartości

  2. Zapytanie Oracle w celu uzyskania pierwszego identyfikatora transakcji na podstawie zużytej transakcji wychodzącej

  3. Jak zwrócić listę wartości zamiast ciągu podczas wykonywania zapytań do bazy danych Oracle przy użyciu XPath?

  4. Kontynuacja wstawek w Oracle po zgłoszeniu wyjątku

  5. Jak programowo ustawić nazwę tabeli w PL/SQL?