sql >> データベース >  >> RDS >> Oracle

OracleでONCOMMITのトリガーを定義するにはどうすればよいですか?

    OracleにはONCOMMITトリガーメカニズムはありません。ただし、回避策があります:

    1. ON COMMIT REFRESHでマテリアライズド・ビューを使用して、このMVにトリガーを追加することができます。これにより、コミット時にベーステーブルが変更されたときにロジックをトリガーできます 。トリガーでエラーが発生した場合、トランザクションはロールバックされます(コミットされていない変更はすべて失われます)。

    2. DBMS_JOBを使用して、コミット後のアクションを延期できます。これは非同期アクションであり、場合によっては望ましい場合があります(たとえば、トランザクションが成功した後に電子メールを送信する場合)。プライマリトランザクションをロールバックすると、ジョブはキャンセルされます。ジョブとプライマリセッションは独立しています。ジョブが失敗した場合、メイントランザクションはロールバックされません。

    あなたの場合、おそらくオプション(1)を使用できます。個人的には、ビジネスロジックをトリガーにコーディングするのは、非常に複雑になるため好きではありませんが、技術的には実行可能だと思います。



    1. SQLサーバーで先月の記録を取得する

    2. postgresqlのRownum

    3. SQLServerにUpdateストアドプロシージャを挿入します

    4. OracleのN'String'リテラルとU'String'リテラルの違い