LISTEN

Name

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 ,应用程序员不应该直接使用 LISTENUNLISTEN. 请参考你使用的库的文档获取更多细节.

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

注意

name 可以是任何可以作为名称有效的字符串;它不需要与任何实际表相对应. 如果 notifyname 被双引号包围,它甚至可以不是一个有效的语句串, 而可以是任何小于31字符的字符串.

一些以前的 Postgres, 如果 name 不与任何现存的表名对应就必须用双引号括起来.不管语意上是否正确. 现在不再有这个限制了.

用法

psql 里配制和执行一个监听/通知序列:

LISTEN virtual;
NOTIFY virtual;

Asynchronous NOTIFY 'virtual' from backend with pid '8448' received.

兼容性

SQL92

SQL92里没有 LISTEN