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

Как да дефинирам тригер ON COMMIT в Oracle?

В Oracle няма задействащ механизъм ON COMMIT. Има обаче заобиколни решения:

  1. Можете да използвате материализиран изглед с ON COMMIT REFRESH и да добавите тригери към този MV. Това ще ви позволи да задействате логиката, когато основна таблица е променена по време на комит . Ако тригерът предизвика грешка, транзакцията ще бъде върната назад (ще загубите всички неангажирани промени).

  2. Можете да използвате DBMS_JOB, за да отложите действие след комит. Това би било асинхронно действие и може да е желателно в някои случаи (например когато искате да изпратите имейл, след като транзакцията е била успешна). Ако отмените основната транзакция, заданието ще бъде анулирано. Заданието и първичната сесия са независими:ако заданието се провали, основната транзакция няма да бъде върната назад.

Във вашия случай вероятно бихте могли да използвате опция (1). Аз лично не обичам да кодирам бизнес логиката в тригери, тъй като това добавя много сложност, но технически мисля, че би било изпълнимо.



  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

  2. Как да интегрирате Oracle и Kafka

  3. Рекурсивна заявка в Oracle

  4. NEW_TIME() Функция в Oracle

  5. Генерирайте тестови данни с помощта на Oracle PL/SQL разработчик