我一直在玩PostgreSQL的通知系統,不能爲我的數字生活爲什麼pg_notify(文本,文本)從來沒有工作。這個功能沒有過多的記錄,我找不到很多它在野外使用的例子,所以我想沒有人會介意我在這裏問。在PostgreSQL中使用pg_notify(文本,文本)的LISTEN/NOTIFY
完全按預期運行以下工作:
LISTEN my_channel;
NOTIFY my_channel, 'my message text';
使用pg_notify()函數但是返回空值,並沒有通知過發送。也沒有錯誤。使用的一個例子是:
SELECT pg_notify('my_channel', 'my message text');
我可以使用NOTIFY但功能我的目標是通知簡化成一個查詢,像這樣:
select pg_notify(get_player_error_channel(username)::TEXT, 'test'::TEXT)
from player;
我想我一定是失去了一些東西可笑,但我沒有計算出這個原因。討論NOTIFY的頁面可以在這裏找到:http://www.postgresql.org/docs/9.0/static/sql-notify.html
關於它,它提到了pg_notify(),這讓我認爲沒有什麼大不同。
pg_notify 發送通知,你也可以使用函數pg_notify(文本,文本)。該函數將通道名稱作爲第一個參數,將有效負載作爲第二個參數。如果您需要處理非常量通道名稱和有效載荷,該功能比NOTIFY命令更易於使用。
感謝一如既往爲輔助
編輯:數據庫的版本是:在i686-PC-Linux的GNU 「的PostgreSQL 9.0.3,GCC由海灣合作委員會(GCC)4.2.4編譯,32位「
你正在使用哪個postgresql版本? SELECT版本()! – Daniel 2011-03-02 21:01:17
輸入'LISTEN my_channel;''選擇pg_notify('my_channel','我的消息文本');'進入psql會話不輸出任何內容?它對我來說,pg_notify的結果伴隨着「Asynchronous notification ...」消息。 – araqnid 2011-03-02 21:33:05
感謝araqnid,這有助於保證我不會發瘋!不幸的是,這也有助於讓我看起來很愚蠢。好吧。我的答案如下。 – Abstrct 2011-03-02 21:44:43