LISTEN

Name

LISTEN  --  通知条件について応答を監視する。

Synopsis

LISTEN name
  

入力

name

通知条件名。

出力

LISTEN

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

NOTICE Async_Listen: We are already listening on name

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

説明

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

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

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

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

NOTIFY のレファレンスページには、 LISTENNOTIFY の使用方法 に関するより広範な記述があります。

注意

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

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

使用法

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

LISTEN virtual;
NOTIFY virtual;

ASYNC NOTIFY of 'virtual' from backend pid '11239' received
   

互換性

SQL92

SQL92 には LISTEN はあり ません。