PostgreSQL で挿入/更新後に起動する AFTER トリガーを設定した場合、呼び出しソフトウェアはトリガーが終了するまで待機してから制御を呼び出しソフトウェアに戻す必要がありますか? それともトリガーはバックグラウンドで自動的に実行されますか?
ベストアンサー1
はい、同じトランザクション内で実行されるためです。トリガーが失敗すると、挿入/更新も失敗します。失敗するクエリ (存在しないテーブルを選択する) を実行するテストを実行するだけで、動作がどのようになり、アプリケーションがどのように動作するかを確認できます。
CREATE OR REPLACE FUNCTION foo() RETURNS TRIGGER
AS
$$
BEGIN
EXECUTE 'SELECT fail';
END;
$$
LANGUAGE plpgsql;