PostgreSQL 9.1.1文書
前のページ | 巻戻し |  | 早送り | 次のページ

# LISTEN

## 名前

LISTEN -- 通知を監視する

## 概要

    LISTEN channel

## 説明

`LISTEN`は現在のセッションを、通知チャネル`channel`のリスナとして登録します。 現在のセッションが既に指定した通知チャネルのリスナとして登録されている場合は、何も起こりません。

このセッションまたは同一データベースに接続している別のセッションによって`NOTIFY `channel``が実行されると、現在その通知チャネルを監視している全てのセッションに対して通知されます。 次に、各セッションは接続中のクライアントアプリケーションにこれを通知します。

`UNLISTEN`コマンドを使って、セッションに登録された指定通知チャネルを解除できます。 また、セッションの監視登録はそのセッションが終了した時点で自動的に削除されます。

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

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

## パラメータ

`channel`

  通知チャネルの名前です（任意の識別子）。

## 注釈

`LISTEN`はトランザクションのコミット時に影響します。 `LISTEN`または`UNLISTEN`がトランザクション内で実行され、それがロールバックされた場合、監視している通知チャネルの集合には変化はありません。

`LISTEN`を実行したトランザクションでは二相コミットの準備を行うことはできません。

## 例

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

    LISTEN virtual;
    NOTIFY virtual;
    Asynchronous notification "virtual" received from server process with PID 8448.

## 互換性

標準SQLに`LISTEN`はありません。

## 関連項目

NOTIFY, UNLISTEN

前のページ | ホーム | 次のページ
INSERT | 上に戻る | LOAD