W Oracle nie ma mechanizmu wyzwalającego ON COMMIT. Istnieją jednak obejścia:
-
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).
-
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.