LISTEN
功能描述
LISTEN命令用于监听一个通知。
LISTEN会在名为channel的通知频道上将当前会话注册为一个监听者。如果当前会话已经被注册为这个通知频道的一个监听者,则不会执行任何操作。
只要NOTIFY命令被调用(不管是在这个会话还是在另一个连接到同一数据库的会话中),所有当前正在该通知频道上监听的会话都会被通知,并且每一个会话将会接着通知连接到它的客户端应用。
可以使用UNLISTEN命令取消对给定通知通道的会话注册。当会话结束时,它的监听注册会被自动清除。
客户端发出LISTEN命令之后,会通过驱动程序去询问服务器端是否有需要接受的通知,一个客户端检测通知的方式取决于它使用的Vastbase应用编程接口,如JDBC接口。因此,使用此功能需要驱动程序相关的接口来适配。
LISTEN / NOTIFY功能,可以用来传递字符串信息,也可以用来做表之间的数据同步。LISTEN / NOTIFY的使用也可以参考NOTIFY。
注意事项
LISTEN在事务提交时生效。
已执行LISTEN的事务无法为两阶段提交做准备。
支持版本:
- V2.2 Build 10(Patch No.10)及以上补丁版本。
- V2.2 Build 13及以上版本。
语法格式
LISTEN channel_name
参数说明
channel_name
一个通知频道的名称。
示例
前置条件
使用vsql工具连接至客户端。
vsql -d vastbase -p 5432 -r
示例步骤: 在vsql中配置并执行LISTEN / NOTIFY命令:
1、注册监听频道。
LISTEN virtual;
返回结果:
LISTEN
2、发送一个通知事件。
NOTIFY virtual;
返回结果:
NOTIFY
Asynchronous notification "virtual" received from server process with PID 18446744072028346112.
兼容性
在SQL标准中没有LISTEN语句。