トリガーは常に、トリガーを起動する文が実行されるトランザクションの一部として実行されます。 トリガーコードブロック内で例外が発生しない場合、トリガーを起動する文を含むトランザクションがコミットされた場合にのみ、トリガー内のトリガーコマンドの効果がコミットされます。 したがって、トランザクションがロールバックされると、トリガー内のすべての DML コマンドの効果もロールバックされます。

トリガーコードブロック内で例外が発生しても、例外セクションでキャッチおよび処理される場合は、トリガー内のトリガーコマンドの効果は引き続きロールバックされます。 ただし、アプリケーションがカプセル化トランザクションのロールバックを強制しない限り、トリガーを起動する文自体はロールバックされません。

トリガーコードブロック内の例外が処理されない場合、トリガーをカプセル化するトランザクションは中止され、ロールバックされます。 したがって、トリガー内の DML コマンドとトリガーを起動する文の効果はすべてロールバックされます。