OracleにはONCOMMITトリガーメカニズムはありません。ただし、回避策があります:
-
ON COMMIT REFRESHでマテリアライズド・ビューを使用して、このMVにトリガーを追加することができます。これにより、コミット時にベーステーブルが変更されたときにロジックをトリガーできます 。トリガーでエラーが発生した場合、トランザクションはロールバックされます(コミットされていない変更はすべて失われます)。
-
DBMS_JOBを使用して、コミット後のアクションを延期できます。これは非同期アクションであり、場合によっては望ましい場合があります(たとえば、トランザクションが成功した後に電子メールを送信する場合)。プライマリトランザクションをロールバックすると、ジョブはキャンセルされます。ジョブとプライマリセッションは独立しています。ジョブが失敗した場合、メイントランザクションはロールバックされません。
あなたの場合、おそらくオプション(1)を使用できます。個人的には、ビジネスロジックをトリガーにコーディングするのは、非常に複雑になるため好きではありませんが、技術的には実行可能だと思います。