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

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

使用方法

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

LISTEN virtual;
NOTIFY virtual;

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

互換性

SQL92

SQL92LISTEN は ありません。