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

Как да извикате процедура, която използва същата таблица в след задействане

Не можеш.

Нормален тригер на ниво ред не може да направи заявка към таблицата, върху която е дефиниран тригерът, защото това би предизвикало изключение на променяща се таблица. Предполагам, че това е причината, поради която сте декларирали своя тригер да използва автономна транзакция (автономна транзакция за нещо различно от постоянно регистриране е почти сигурно грешка). Ако направите това обаче, вашият тригер не може да види неосъществените промени, направени от задействащата транзакция. Това е проблемът, който срещате сега.

Алтернатива би била използването на съставен тригер . Ще декларирате колекция от test_table.type_%type , бихте добавили стойностите, които се променят към тази колекция в частта на ниво ред на вашия тригер, и след това бихте итерирали върху елементите в колекцията в частта след израза на вашия тригер. На тригер на ниво оператор е разрешено да прави запитвания към таблицата, в която е дефиниран тригерът, така че можете да извикате вашата процедура от частта след оператора на вашия съставен тригер.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android Oracle база данни JDBC6

  2. Масово импортиране на Oracle

  3. стартирайте скрипта oracle sql от java

  4. DBMS_SCHEDULER.DROP_JOB само ако съществува

  5. Как да конвертирате дата в времеви печат (DD-MON-YYYY HH24:MI:SS.FF формат) в oracle?