我一直在玩PostgreSQL的通知系统,并且在我的生活中无法解释为什么pg_notify(文本,文本)永远不会起作用.这个功能没有过多记录,我找不到很多在野外使用的例子,所以我想没有人会介意我在这里问.
运行以下工作完全符合预期:
LISTEN my_channel;
NOTIFY my_channel, 'my message text';
Run Code Online (Sandbox Code Playgroud)
但是,使用pg_notify()函数会返回一个空值,并且不会发送任何通知.也没有错误.一个例子是:
SELECT pg_notify('my_channel', 'my message text');
Run Code Online (Sandbox Code Playgroud)
我可以使用NOTIFY函数,但我的目标是将通知简化为如下查询:
select pg_notify(get_player_error_channel(username)::TEXT, 'test'::TEXT)
from player;
Run Code Online (Sandbox Code Playgroud)
我认为我必须遗漏一些荒谬的东西,但我没有找到解决这个问题的原因.可以在此处找到讨论NOTIFY的页面:http://www.postgresql.org/docs/9.0/static/sql-notify.html
在它上面,它提到了关于pg_notify()的内容,这让我觉得没有什么大不相同的东西.
pg_notify 要发送通知,您还可以使用函数pg_notify(text,text).该函数将通道名称作为第一个参数,将有效负载作为第二个参数.如果您需要使用非常量通道名称和有效负载,则该功能比NOTIFY命令更容易使用.
一如既往地感谢您的帮助
编辑:数据库版本是:"i6486-pc-linux-gnu上的PostgreSQL 9.0.3,由GCC gcc(GCC)4.2.4编译,32位"