关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
监听通知。
LISTEN <channel>
LISTEN 将当前会话注册为名为 channel 的通知通道的监听器。如果当前会话已注册为该通知通道的监听器,则不执行任何操作。
每当调用命令 NOTIFY <通道> 时(无论由当前会话还是连接至同一数据库的其他会话发起),所有当前监听该通知通道的会话都会收到通知,每个会话随后将通知其连接的客户端应用程序。
可通过 UNLISTEN 命令取消会话对特定通知通道的订阅。当会话结束时,其监听注册将自动清除。
客户端应用程序检测通知事件的方法取决于其使用的PostgreSQL应用程序接口。使用libpq库时,应用程序需将LISTEN作为普通SQL命令执行,随后必须定期调用PQnotifies()函数以获取是否接收到通知事件。其他接口(如libpgtcl)提供了更高层次的通知事件处理方法;实际上,使用libpgtcl时应用程序开发者甚至不应直接执行LISTEN或UNLISTEN命令。更多细节请参阅所用接口的文档说明。
NOTIFY 对 LISTEN 和 NOTIFY 的用法进行了更深入的讨论。
LISTEN 在事务提交时生效。若在事务内执行 LISTEN 或 UNLISTEN 操作,而后该事务被回滚,则监听的通知通道集保持不变。
已执行LISTEN的交易无法为两阶段提交做准备。
从 psql 配置并执行监听/通知序列:
LISTEN virtual;
NOTIFY virtual;
Asynchronous notification "virtual" received from server process with PID 8448.
SQL标准中不存在LISTEN语句。