↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 6.5 已于 2004 年 6 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

LISTEN

LISTEN — 监听某个通知条件上的响应

大纲

LISTEN name
  

输入

name

通知条件的名称。

输出

LISTEN

注册成功完成时返回的消息。

NOTICE Async_Listen: We are already listening on name

如果该后端已经注册了该通知条件。

描述

LISTEN把当前的 Postgres后端注册为通知条件 name的监听者。

每当命令 NOTIFY name 被调用时——无论是被本后端还是被连接到同一数据库的其他后端 调用——所有当前正在监听该通知条件的后端都会被通知,而每个 后端又将进而通知它所连接的前端应用。更多信息请参阅 NOTIFY的讨论。

可以用UNLISTEN命令取消一个后端对给定 通知条件的注册。此外,后端的监听注册在后端进程退出时会被 自动清除。

前端应用检测通知事件所必须使用的方法取决于它使用的 Postgres应用编程接口。使用 基本的 libpq 库时,应用像发出普通 SQL 命令一样发出 LISTEN,然后必须周期性地调用例程 PQnotifies来查明是否收到了任何通知事件。 其他接口(例如 libpgtcl)提供了处理通知事件的 更高层方法;实际上,使用 libpgtcl 时,应用 程序员甚至不必直接发出LISTEN或 UNLISTEN。更多细节请参阅你所使用的库的 文档。

NOTIFY的参考页包含关于LISTEN和 NOTIFY用法的更广泛的讨论。

注解

name 可以是任何可作为名称使用的有效字符串; 它不需要对应任何实际表的名称。如果 notifyname 被双引号括起来,它甚至不必是语法上有效的名称, 而可以是长度不超过 31 个字符的任何字符串。

在Postgres的一些早期版本中, 当name 不对应任何现有表名时,即使它在语法上是有效的名称, 也必须用双引号把它括起来。现在已不再需要这样。

用法

在psql中配置并执行一个 listen/notify 序列:

LISTEN virtual;
NOTIFY virtual;

ASYNC NOTIFY of 'virtual' from backend pid '11239' received
   

兼容性

SQL92

LISTEN 在 SQL92 中没有。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。