======== UNLISTEN ======== .. container:: refentry :name: SQL-UNLISTEN .. container:: titlepage .. container:: refnamediv .. rubric:: UNLISTEN :name: unlisten UNLISTEN — 停止监听一个通知 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis UNLISTEN { channel | * } .. container:: refsect1 :name: id-1.9.3.181.5 .. rubric:: 描述 :name: 描述 ``UNLISTEN``\ 被用来移除一个已经存在的对 ``NOTIFY``\ 事件的注册。 ``UNLISTEN``\ 取消任何已经存在的把当前 PostgreSQL会话作为名为 *``channel``*\ 的通知 频道的监听者的注册。特殊的通配符\ ``*``\ 取消当前会话 的所有监听者注册。 `NOTIFY <sql-notify.html>`__\ 包含有关\ ``LISTEN`` 和\ ``NOTIFY``\ 使用的更深入讨论。 .. container:: refsect1 :name: id-1.9.3.181.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist *``channel``* 一个通知频道的名称(任何标识符)。 ``*`` 所有用于这个会话的当前监听注册都会被清除。 .. container:: refsect1 :name: id-1.9.3.181.7 .. rubric:: 注解 :name: 注解 你可以 unlisten 你没有监听的东西,不会出现警告或者错误。 在每一个会话末尾,会自动执行\ ``UNLISTEN *``\ 。 一个已经执行了\ ``UNLISTEN``\ 的事务不能为 两阶段提交做准备。 .. container:: refsect1 :name: id-1.9.3.181.8 .. rubric:: 示例 :name: 示例 做一次注册: .. code:: programlisting LISTEN virtual; NOTIFY virtual; Asynchronous notification "virtual" received from server process with PID 8448. 一旦执行了\ ``UNLISTEN``\ ,进一步的\ ``NOTIFY`` 消息将被忽略: .. code:: programlisting UNLISTEN virtual; NOTIFY virtual; -- no NOTIFY event is received .. container:: refsect1 :name: id-1.9.3.181.9 .. rubric:: 兼容性 :name: 兼容性 SQL 标准中没有\ ``UNLISTEN``\ 命令。 .. container:: refsect1 :name: id-1.9.3.181.10 .. rubric:: 另见 :name: 另见 `LISTEN <sql-listen.html>`__, `NOTIFY <sql-notify.html>`__