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

挿入トリガーにはcommitステートメントが必要ですか

    トリガーは、コミットを入れることができないCOMMITを必要としないだけでなく、本体のコードにCOMMIT(またはロールバック)が含まれている場合、トリガーはコンパイルされません。

    これは、トランザクション中にトリガーが起動するためです。トリガーが起動しても、現在のトランザクションはまだ完了していません。 COMMITがトランザクションを終了すると、トリガーでトランザクションを許可すると、作業単位が壊れます。

    したがって、トリガーで実行された変更は、トリガーを起動したDMLを発行した所有トランザクションによってコミット(またはロールバック)されます。

    トリガーはPRAGMAAUTONOMOUS_TRANSACTIONの下で実行できることは事実です。その場合、トリガーにはCOMMITが必要です。ただし、Oracleではネストされたトランザクションの意味のある使用法がほとんどないため、これはエッジケースです。



    1. PHP-MySqlを使用したフォームの検証と挿入

    2. レコード間の時間を保存する

    3. クラスター化インデックスと非クラスター化インデックスの違い

    4. PHP:オンラインオフラインステータス