NOTIFY
功能描述
NOTIFY命令用于生成一个通知。
NOTIFY命令发送一个通知事件以及一个可选的“载荷”字符串给每个正在监听的客户端应用,这些应用之前都在当前数据库中为指定的频道名执行过LISTEN channel
。通知对所有用户都可见。
由一个通知事件传递给客户端的信息包括通知频道名称、发出通知的会话的服务器进程PID以及载荷字符串,如果载荷字符串没有被指定则它为空字符串。
要发送通知,也可以使用函数PG_NOTIFY。
注意事项
如果NOTIFY在一个事务内执行,在事务被提交之前,该通知事件都不会被递送。因此,通常只有在短事务中才使用LISTEN / NOTIFY命令。
一个已经执行了NOTIFY的事务不能为两阶段提交做准备。
支持版本:
- V2.2 Build 10(Patch No.10)及以上补丁版本。
- V2.2 Build 13及以上版本。
语法格式
NOTIFY channel [ , payload ]
参数说明
channel
要对其发信号的通知频道的名称。
payload
要通过通知进行沟通的“载荷”字符串。
示例
在vsql中配置并执行LISTEN / NOTIFY命令。
1、注册监听频道。
LISTEN virtual;
返回结果:
LISTEN
2、发送一个通知事件。
NOTIFY virtual;
返回结果:
NOTIFY
Asynchronous notification "virtual" received from server process with PID 18446744072028346112.
3、发送通知并指定载荷字符串。
NOTIFY virtual, 'This is the payload';
返回结果如下:
Asynchronous notification "virtual" with payload "This is the payload" received from server process with PID 18446744072028346112.
兼容性
SQL标准中没有NOTIFY语句。