15

トリガー(pl / PGsqlAFTER INSERTで記述された関数)は、元の挿入とは別のトランザクションで起動しますか?

私が心配しているのは、トリガーが何らかの例外を経験するかどうかです。
元のインサートに影響を与えることなく、トリガーをロールバックできますか?

4

2 に答える 2

27

すべてのPostgreSQLトリガーは、それらをトリガーしたトランザクションと同じトランザクションで実行されます。

編集LISTEN+NOTIFYを使用して、トリガーからトランザクションの外部で実行されるコードにメッセージを送信することもできます。その場合、メッセージはコミットが成功した時点でのみ配信されます。リスナーのエラーは、トリガーとなるトランザクションをロールバックしません。

于 2012-05-23T20:39:06.197 に答える
10

トリガープロシージャは、関連するトリガーイベントと同じトランザクションで実行されます。ただし、トリガー手順の効果は個別にロールバックできます。

afterトリガーに 例外処理を追加する必要があります。

于 2012-05-24T02:37:33.653 に答える