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