"LISTEN" SQL 03/12/94 日本語PostgreSQL 日本語PostgreSQL

名称

listen - リレーションへの通知を待ちます

形式

listen class_name
    

説明

listen はリレーションclass_nameのリスナーとして現在のバックエンドプロセスに登録するのに使います。コマンドnotify class_name

がルールやクエリから呼ばれると、通知待ちをしているバックエンドと通信しているフロントエンドアプリケーションは通知を受けます。

このイベント通知はLibpq プロトコルとフロントエンドアプリケーションインタフェイスを通じて行われます。アプリケーションプログラムは Libpq のグローバル変数PQAsyncNotifyWaitingをいつもポーリングしていなくてはなりません。そして、PQnotifiesルーチンで与えられた通知が関連するクラスの名前を見付けます。このコードがアプリケーションに組み込まれていなければ、イベント通知はキューに貯められ、処理されることはありません。

参照

rule(l) ,notify(l) ,select(l) ,libpq.

バグ

通知待ちをやめる方法は接続を落す(つまりバックエンドサーバを再起動する)以外にありません。

monitor(1) コマンドは非同期イベントをポーリングしません。