LISTEN

Name

LISTEN  -- 通知の監視

Synopsis

LISTEN name
  

入力

name

通知条件の名前です。

出力

LISTEN

登録処理が正常終了した場合に返されるメッセージです。

WARNING: Async_Listen: We are already listening on name

このバックエンドに指定した通知条件が既に登録されていた場合です。

説明

LISTEN は現在の PostgreSQL バックエンドを、通知条件 name のリスナとして登録します。

このバックエンドまたは同一データベースに接続している別のバックエンドによって NOTIFY name が実行されると、現在この通知条件を監視しているバックエンド全てに対して通知がなされます。 そして、各バックエンドは同様に接続中のフロントエンドアプリケーションに通知します。より詳細については NOTIFY を参照して下さい。

UNLISTEN コマンドを使って、バックエンドに登録さ れた指定通知条件を解除できます。また、バックエンドの監視登録は、そのバックエンドプロセスが終了した時点で自動的に削除されます。

フロントエンドアプリケーションが通知イベントを検出するために使わな ければならない方法は、それがどの PostgreSQL アプリケーションプログラミングインタフェースを使用しているのかに依存します。 アプリケーションは、libpq ライブラリを使用して LISTEN を通常の SQL コマンドとして発行し、その後、ルーチン PQnotifies を定期的に呼び出して通知イベントが受信されたかどうかを調べる必要があります。 libpgtcl 等の他のインタフェースの場合は、 通知イベントを扱うためのより高レベルな方法が用意されています。 実際、libpgtcl を使ったアプリケーションの場合、プログラマが LISTENUNLISTEN を直接発行する必要すらありません。 詳細については、ご使用のライブラリのドキュメンテーションを参照してください。

NOTIFYには、LISTEN および NOTIFY についてのより広範な説明があります。

注釈

nameは、名前としてどんな文字列でもかまいません。 実テーブルの名前に対応させる必要は全く ありません。notifyname が二重引用符で括られていた場合は、構文的に有効なものである必要すらありません。 しかし、その長さは 63 文字までの任意の文字列という制限があります。

以前の PostgreSQL のリリースには、 name が文法的には有効であっても既存のテーブル名に対応していない場合は二重引用符で括らなければなりませんでした。これは現在は不要です。

使用方法

psql から監視/通知処理の設定と実行を行ないます。

LISTEN virtual;
NOTIFY virtual;

Asynchronous NOTIFY 'virtual' from backend with pid '8448' received.

互換性

SQL92

SQL92LISTEN はありません。