V Oracle neexistuje žádný spouštěcí mechanismus ON COMMIT. Existují však zástupná řešení:
-
Můžete použít materializované zobrazení s ON COMMIT REFRESH a přidat spouštěče k tomuto MV. To by vám umožnilo spustit logiku, když byla základní tabulka upravena v době odevzdání . Pokud spouštěč vyvolá chybu, transakce bude vrácena zpět (přijdete o všechny nepotvrzené změny).
-
Pomocí DBMS_JOB můžete odložit akci na dobu po potvrzení. Jednalo by se o asynchronní akci a v některých případech může být žádoucí (například když chcete odeslat e-mail poté, co byla transakce úspěšná). Pokud primární transakci vrátíte zpět, úloha bude zrušena. Úloha a primární relace jsou nezávislé:pokud úloha selže, hlavní transakce nebude vrácena zpět.
Ve vašem případě byste pravděpodobně mohli použít možnost (1). Osobně nerad kóduji obchodní logiku v triggerech, protože to přidává spoustu složitosti, ale technicky si myslím, že by to bylo proveditelné.