LISTEN

LISTEN —收听通知

Synopsis

LISTEN channel

Description

LISTEN在名为* channel *的通知通道上将当前会话注册为侦听器。如果当前会话已被注册为该通知通道的侦听器,则不执行任何操作。

每当此会话或连接到同一数据库的另一个会话调用命令NOTIFY channel时,都会通知当前正在该通知通道上监听的所有会话,并且每个会话将依次通知其连接的 Client 端应用程序。

可以使用UNLISTEN命令为给定的通知通道注销会话。会话结束时,会话的监听注册会自动清除。

Client 端应用程序检测通知事件所必须使用的方法取决于其使用的 PostgreSQL 应用程序编程接口。使用 libpq 库,应用程序将LISTEN作为普通的 SQL 命令发出,然后必须定期调用函数PQnotifies来确定是否已接收到任何通知事件。其他接口(例如 libpgtcl)提供了用于处理通知事件的更高级方法。实际上,使用 libpgtcl,应用程序程序员甚至不应直接发出LISTENUNLISTEN。有关更多详细信息,请参见所用接口的文档。

NOTIFY包含有关LISTENNOTIFY用法的更广泛讨论。

Parameters

  • channel

    • 通知 Channel 的名称(任何标识符)。

Notes

LISTEN在事务提交时生效。如果在稍后回滚的事务中执行LISTENUNLISTEN,则正在侦听的通知通道集将保持不变。

已执行LISTEN的事务无法准备进行两阶段提交。

Examples

从 psql 配置并执行侦听/通知序列:

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

Compatibility

SQL 标准中没有LISTEN语句。

See Also

NOTIFY, UNLISTEN