Det finns ingen ON COMMIT-triggermekanism i Oracle. Det finns dock lösningar:
-
Du kan använda en materialiserad vy med ON COMMIT REFRESH och lägga till triggers till denna MV. Detta skulle tillåta dig att trigga logiken när en bastabell har ändrats vid tidpunkten för commit . Om utlösaren ger upphov till ett fel, kommer transaktionen att återställas (du kommer att förlora alla obundna ändringar).
-
Du kan använda DBMS_JOB för att skjuta upp en åtgärd till efter commit. Detta skulle vara en asynkron åtgärd och kan vara önskvärt i vissa fall (till exempel när du vill skicka ett e-postmeddelande efter att transaktionen har lyckats). Om du återställer den primära transaktionen kommer jobbet att avbrytas. Jobbet och den primära sessionen är oberoende:om jobbet misslyckas kommer huvudtransaktionen inte att återställas.
I ditt fall kan du förmodligen använda alternativ (1). Jag gillar personligen inte att koda affärslogik i triggers eftersom det ger mycket komplexitet men tekniskt sett tror jag att det skulle vara genomförbart.