Der er ingen ON COMMIT-triggermekanisme i Oracle. Der er dog løsninger:
-
Du kan bruge en materialiseret visning med ON COMMIT REFRESH og tilføje triggere til denne MV. Dette vil give dig mulighed for at udløse logikken, når en basistabel er blevet ændret på tidspunktet for commit . Hvis triggeren udløser en fejl, vil transaktionen blive rullet tilbage (du mister alle ikke-forpligtede ændringer).
-
Du kan bruge DBMS_JOB til at udskyde en handling til efter commit. Dette ville være en asynkron handling og kan være ønskeligt i nogle tilfælde (f.eks. når du vil sende en e-mail, efter at transaktionen er lykkedes). Hvis du ruller den primære transaktion tilbage, vil jobbet blive annulleret. Jobbet og den primære session er uafhængige:Hvis jobbet mislykkes, vil hovedtransaktionen ikke blive rullet tilbage.
I dit tilfælde kunne du sandsynligvis bruge mulighed (1). Jeg kan personligt ikke lide at kode forretningslogik i triggere, da det tilføjer en masse kompleksitet, men teknisk set tror jeg, det ville være muligt.