您的位置:58编程 > PostgreSQL LISTEN

PostgreSQL LISTEN

2023-04-17 13:33 PostgreSQL LISTEN

 PostgreSQL LISTEN

LISTEN — 监听一个通知

大纲

LISTEN channel

描述

LISTEN在名为channel的通知频道上将当前会话注册为一个监听者。如果当前会话已经被注册为这个通知频道的一个监听者,则什么也不会发生。

只要命令NOTIFY channel 被调用(不管是在这个会话还是在另一个连接到同一数据库的会话中),所有当前正在该通知频道上监听的会话都会被通知,并且每一个会话将会接着通知连接到它的客户端应用。

可以使用UNLISTEN命令在一个给定通知频道上反注册一个会话。当会话结束时,它的监听注册会被自动清除。

一个客户端应用检测通知事件的必用方法取决于它使用的PostgreSQL应用编程接口。如果使用libpq库,应用会将LISTEN作为一个普通 SQL 命令发出,并且接着必须周期性地调用函数PQnotifies来查看是否接收到通知事件。其他诸如 libpgtcl的接口提供了更高层次上的处理通知事件的方法。事实上,通过使用libpgtcl应用程序员甚至不必直接发出LISTENUNLISTEN。更多细节可参阅所使用的接口的文档。

参数

channel

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

注解

LISTEN在事务提交时生效。如果在一个后来被回滚的事务中执行了LISTENUNLISTEN,被监听的通知频道集合不会变化。

一个已经执行了LISTEN的事务不能为两阶段提交做准备。

第一次设置侦听会话时有一个竞争条件:如果并发提交的事务正在发送通知事件,那么新的侦听会话将接收哪些事件? 答案是,会话将接收在事务提交步骤中的一瞬间之后所有提交的事件。但这比事务在查询中可能观察到的任何 数据库状态都要晚一些。这将导致使用LISTEN的以下规则:首先执行(并提交!)该命令, 然后在一个新事务中根据应用程序逻辑的需要检查数据库状态,然后依靠通知来了解数据库状态的后续更改。最初收 到的几个通知可能涉及在初始数据库检查中已经观察到的更新,但这通常是无害的。

NOTIFYLISTENNOTIFY的 使用进行了更广泛的讨论。

例子

psql中配置并执行一个监听/通知序列

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

兼容性

在 SQL 标准中没有LISTEN语句。

参见

NOTIFY , UNLISTEN


阅读全文
以上是58编程为你收集整理的 PostgreSQL LISTEN全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL psql

    PostgreSQL psql

    psql — PostgreSQL的交互式终端大纲psql [option...] [dbname[username]]描述 psql是一个PostgreSQL的基于终端的前端。它让你能...

  •  PostgreSQL pg_ctl

    PostgreSQL pg_ctl

    pg_ctl — 初始化、启动、停止或控制一个PostgreSQL服务器大纲pg_ctlinit[db] [-Ddatadir] [-s] [-oinitdb-options]pg_ctlstart ...

  •  PostgreSQL pg_auth_members

    PostgreSQL pg_auth_members

    目录pg_auth_members展示了角色之间的成员关系。允许任何无环的关系集合。由于用户标识符是集簇范围的,pg_auth_members在一个集...

  • vim 映射 Vimscript 基本映射

    vim 映射 Vimscript 基本映射

    如果说Vimscript有一个特性使得你能够按照你的意愿定制Vim,那就非键盘映射莫属。 你可以通过键盘映射告诉Vim:当我按下这个键时...

  • vim 映射 Vimscript 精确映射

    vim 映射 Vimscript 精确映射

    准备好,下面的内容会比较难以理解。目前为止,我们已经使用map、nmap、vmap以及imap创建了实用的按键映射。 他们很方便,但是有...

  • Svg矩形嵌套自动变大 SVG 矩形

    Svg矩形嵌套自动变大 SVG 矩形

    SVG rect 本节介绍 SVG 形状元素中的 ——rect 元素,该元素会在屏幕上绘制一个矩形 。SVG Shapes SVG有一些预定义的形状元素,...

  • xml 元素 XML Schema all 元素

    xml 元素 XML Schema all 元素

    XML Schema all 元素 完整 XML Schema 参考手册定义和用法元素规定子元素能够以任意顺序出现,每个子元素可出现零次或一次。元素...

  •  XQuery FLWOR + HTML

    XQuery FLWOR + HTML

    XQuery FLWOR + HTML 本节为你介绍XQuery FLWOR 表达式加 HTML 的使用。XML 实例文档 我们将在下面的例子中继续使用这个 "books....

  • xml dom XML DOM cloneNode() 方法

    xml dom XML DOM cloneNode() 方法

    XML DOM cloneNode() 方法 Element 对象定义和用法 cloneNode() 方法创建指定节点的精确拷贝。 该方法返回克隆的节点。 语法clon...

  • 查看xml文件工具 查看 XML 文件

    查看xml文件工具 查看 XML 文件

    查看 XML 文件XML 文件中包含了许多的元素,XML 格式的信息和其他标记的基本单元,以及各种各样的数据。本节教你如何对 XML 文件...

© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS