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

Jak zdefiniować wyzwalacz ON COMMIT w Oracle?

W Oracle nie ma mechanizmu wyzwalającego ON COMMIT. Istnieją jednak obejścia:

  1. Możesz użyć zmaterializowanego widoku z ON COMMIT REFRESH i dodać wyzwalacze do tego MV. Umożliwiłoby to wyzwolenie logiki, gdy tabela bazowa została zmodyfikowana w momencie zatwierdzenia . Jeśli wyzwalacz zgłosi błąd, transakcja zostanie wycofana (utracisz wszystkie niezatwierdzone zmiany).

  2. Możesz użyć DBMS_JOB, aby odroczyć akcję po zatwierdzeniu. Byłoby to działanie asynchroniczne i może być pożądane w niektórych przypadkach (na przykład, gdy chcesz wysłać wiadomość e-mail po pomyślnej transakcji). Jeśli wycofasz podstawową transakcję, zadanie zostanie anulowane. Zadanie i sesja podstawowa są niezależne:jeśli zadanie się nie powiedzie, główna transakcja nie zostanie wycofana.

W twoim przypadku prawdopodobnie możesz skorzystać z opcji (1). Osobiście nie lubię kodować logiki biznesowej w wyzwalaczach, ponieważ dodaje to dużo złożoności, ale technicznie myślę, że byłoby to wykonalne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01438:wartość większa niż określona precyzja dozwolona dla tej kolumny podczas wstawiania 3

  2. Instalowanie pakietu Oracle 9i Developer Suite 2.0 w systemie Windows

  3. Jak skonfigurować DbContext do pracy z Oracle ODP.Net i EF CodeFirst?

  4. Łączenie ciągów zagregowanych w Oracle 10g

  5. Oracle wybierz dla zachowania aktualizacji