pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
UNLISTEN — 停止监听通知
UNLISTEN { notifyname | * }
notifyname先前注册的通知条件的名称。
*清除该后端当前的所有监听注册。
→ UNLISTEN语句已执行的确认(acknowledgement)。
UNLISTEN 用于移除一个现有的NOTIFY注册。 UNLISTEN 取消当前 Postgres会话作为通知条件 notifyname监听者的任何 现有注册。特殊的条件通配符"*"取消当前会话的 所有监听者注册。
NOTIFY 中包含关于LISTEN和 NOTIFY用法的更广泛的讨论。
classname 不需要是有效的类名,而可以是任何可作为名称使用的、长度不超过 32 个字符的字符串。
后端不会因为你 UNLISTEN 一个你并没有在监听的东西而抱怨。 每个后端退出时都会自动执行UNLISTEN *。
Postgres一些早期版本中,不对应实际表的 classname必须用双引号 括起来的限制已不存在。
订阅一个现有的注册:
postgres=> LISTEN virtual; LISTEN postgres=> NOTIFY virtual; NOTIFY Asynchronous NOTIFY 'virtual' from backend with pid '8448' received
一旦执行了 UNLISTEN,后续的 NOTIFY 命令会被 忽略:
postgres=> UNLISTEN virtual; UNLISTEN postgres=> NOTIFY virtual; NOTIFY -- notice no NOTIFY event is received
UNLISTEN 在 SQL92 中没有。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。