2017-03-01 14 views
2

影響を受ける行がない場合でもステートメントトリガーが実行されることがわかりました。 興味深い - とにかく - 影響を受ける行を取得しない方法がありますか、少なくとも行が影響を受けていないかどうかを確認する方法はありますか?Postgres:ステートメントトリガーで影響を受ける行の数を取得

トリガーは挿入後のステートメントです。

ありがとうございます!

+0

次のとおりです。

あなたも、そのクエリをスピードアップするためのインデックスを作成することができますか? –

答えて

2

次を使用することができます。

SELECT count(*) 
FROM mytable 
WHERE xmin::text::bigint = txid_current(); 

トリガーと同じトランザクションで作成または更新されたすべての行をカウントすること。もちろん、同じトランザクション内に同じテーブルの変更がさらにある場合、そのテーブルは目的の結果を返しません。あなたのコードが

CREATE INDEX ON mytable ((xmin::text::bigint)); 
+1

'pg_stat_get_xact_tuples_xxx'の機能はどうですか? – Abelisto

+0

興味深いアイデア!これらの値が常に瞬時に更新されるかどうかはわかりませんが、私のテクニックよりもクエリを実行する方が安いでしょう。 –

関連する問題