首页 > 数据库 > PostgreSQL > 正文

PostgreSQL7.0手册-用户手册-19. SQL命令-LISTEN

2019-09-08 23:33:14
字体:
来源:转载
供稿:网友
LISTEN
名称
LISTEN ― 监听一个通知条件的响应信息 

语法
LISTEN name
输入
name 
通知条件名. 

输出
LISTEN 
成功完成注册后的返回信息. 
NOTICE Async_Listen: We are already listening on name 
如果后端已经注册了该通知条件. 

描述
LISTEN 将当前 Postgres 后端注册为通知条件 name 的监听器. 
当执行了命令 NOTIFY name 后,不管是此后端(进程)或者是其他一个联接到同一数据库的后端(进程)执行的,所有正在监听此通知条件的后端(进程)都将收到通知,并且接下来每个后端将通知与其相连的前端应用.请参考 NOTIFY 获取更多信息. 

使用 UNLISTEN 命令,可以将一个后端内已注册的通知条件删除.同样,后端进程退出时自动删除该后端正在监听的已注册通知条件. 

前端应用检测通知事件的方法取决于 Postgres 应用使用的编程接口.如果使用基本的 libpq 库,应用将 LISTEN 当作普通 SQL 命令使用,而且必须周期地调用 PQnotifies 过程来检测是否有通知到达.其他像 libpgtcl 接口提供了更高级的控制通知事件的方法;实际上,使用 libpgtcl ,应用程序员不应该直接使用 LISTEN 或 UNLISTEN .请参考你使用的库的文档获取更多细节. 

NOTIFY 的手册页包含更广泛的关于 LISTEN 和NOTIFY 的使用的讨论. 

注意
name 可以是任何可以作为名称有效的字符串;它不需要与任何实际表相对应.如果 name 被双引号包围,它甚至可以不是一个有效的语句串,而可以是任何小于31字符的字符串. 
一些以前的 Postgres 版本中,如果 name 不与任何现存的表名对应就必须用双引号括起来.不管语意上是否正确.现在不再有这个限制了.

用法
在 psql 里配制和执行一个监听/通知序列: 
LISTEN virtual;
NOTIFY virtual;

Asynchronous NOTIFY 'virtual' from backend with pid '8448' received.
兼容性
SQL92
在 SQL92 中没有 LISTEN.
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选