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

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

百科 / SQL 命令 / 会话与参数

SQL COMMAND · 会话与参数

UNLISTEN

停止监听通知

stop listening for a notification

UNLISTEN会话与参数引入 6.4(基线)现存至 20 devel2 次语法变更

动词
UNLISTEN
对象
—
引入版本
6.4(基线)
状态
现存
语法变更次数
2
手册小节数
6

本站手册 · 18官方文档 ↗

版本轨迹

相对 PostgreSQL 17 无变化。

语法铁道图 PostgreSQL 18

沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。

UNLISTEN channel *

语法概要

UNLISTEN { channel | * }

PostgreSQL 18 手册 · 查看完整参考页

描述

UNLISTEN 用于移除现有的 NOTIFY 事件注册。UNLISTEN 会取消当前 PostgreSQL 会话作为名为 channel 的通知通道监听者的任何现有注册。特殊通配符* 会取消当前会话的所有监听注册。

NOTIFY 中对 LISTEN 和 NOTIFY 的使用有更详细的讨论。

参数

channel

通知通道的名称(任意标识符)。

*

该会话当前的所有监听注册都会被清除。

注解

对自己并未监听的通道执行 UNLISTEN,不会出现警告或错误。

每个会话结束时,都会自动执行 UNLISTEN *。

执行过 UNLISTEN 的事务不能进入两阶段提交的预备状态。

示例

建立一个监听注册:

LISTEN virtual;
NOTIFY virtual;
Asynchronous notification "virtual" received from server process with PID 8448.

执行 UNLISTEN 之后,后续的 NOTIFY 消息将被忽略:

UNLISTEN virtual;
NOTIFY virtual;
-- no NOTIFY event is received

兼容性

SQL 标准中没有 UNLISTEN 语句。

另见

语法演化

相邻大版本之间的差异,新的在前。版本号链接到对应快照。

  1. PostgreSQL 9.0← 8.4语法变化

    + UNLISTEN { channel | * }− UNLISTEN { name | * }正文更新
  2. PostgreSQL 8.3← 8.2正文更新

    正文更新
  3. PostgreSQL 7.4← 7.3语法变化

    + UNLISTEN { name | * }− UNLISTEN { notifyname | * }正文更新
  4. PostgreSQL 7.3← 7.2正文更新

    正文更新
  5. PostgreSQL 7.2← 7.1正文更新

    正文更新
  6. PostgreSQL 7.1← 7.0文件改名

    sql-unlisten.htm → sql-unlisten.html

    正文更新
  7. PostgreSQL 7.0← 6.5正文更新

    正文更新

同组命令

命令动词对象版本变动最近变更
SESSIONS & SETTINGS会话与参数8 条↑
DISCARDDISCARD— 9.41 次
丢弃会话状态现存
LISTENLISTEN— 9.02 次
监听通知现存
NOTIFYNOTIFY— 9.02 次
发出一个通知现存
RESETRESET— 8.23 次
将一个运行时参数的值恢复为默认值现存
SETSET— 198 次
更改运行时参数现存
SHOWSHOW— 7.23 次
显示一个运行时参数的值现存
UNLISTENUNLISTEN— 9.02 次
停止监听通知现存
ALTER SYSTEMALTERSYSTEM 111 次
更改服务器配置参数现存