2017-02-20 5 views
2

新しい行がテーブルに挿入されるたびにpg_notifyを発射しようとしていますが、新しく挿入された行ごとに通知を受ける代わりに、合計で1つの通知しか受け取りません。postgresの挿入された行ごとにpg_notify通知を取得するには?

トリガ機能は

CREATE OR REPLACE FUNCTION mine."testNotify"() 
    RETURNS TRIGGER AS $$ 
DECLARE 
BEGIN 
    PERFORM pg_notify('testNotify', 'test payload'); 
    RETURN NEW; 
END; 
$$ LANGUAGE plpgsql; 

ある

CREATE TRIGGER "testNotify" 
AFTER INSERT ON mine.test 
FOR EACH ROW EXECUTE PROCEDURE mine."testNotify"() 

あるインサートは、私が正常に新しい100,000行については、このように挿入した

あるので、私は期待します私のアプリケーションがLISTEN "testNotify"の場合は多くの通知が表示されますが、代わりにチャネルはtestNotify、ペイロードはtest payloadです。上記の何か間違っているのですか?

答えて

3

Quote from the manual

同じチャンネル名が同じペイロード列と同じトランザクションから複数回通知された場合は、データベース・サーバは、単一の通知を提供することを決定することができます。

(強調鉱山)

そして:

一方、個別のペイロードの文字列との通知が常に

ので、もし明確な通知として配信されますペイロードに行の主キーを含めて、各行に対して1つの通知を受け取るようにします。

関連する問題