<!--
$Header: /usr/prj/pg/cvsroot/doc/doc/src/sgml/ref/listen.sgml,v 1.3 2001/06/29 08:54:16 natsuyo Exp $
Postgres documentation
-->

<refentry id="SQL-LISTEN">
 <refmeta>
  <refentrytitle id="SQL-LISTEN-TITLE">
   LISTEN
  </refentrytitle>
  <refmiscinfo>SQL<!-- Language Statements -->言語</refmiscinfo>
 </refmeta>
 <refnamediv>
  <refname>
   LISTEN
  </refname>
  <refpurpose>
   <!-- Listen for a response on a notify condition -->
   通知条件についての応答を監視します。<indexterm><primary>LISTEN</primary></indexterm><indexterm><primary>SQL</primary><secondary>LISTEN</secondary></indexterm><indexterm><primary sortas="ひどうきつうち">非同期通知</primary><secondary sortas="かんし">監視</secondary></indexterm><indexterm><primary sortas="つうち">通知</primary></indexterm>
  </refpurpose>
 </refnamediv>
 <refsynopsisdiv>
  <refsynopsisdivinfo>
   <date>1999-07-20</date>
  </refsynopsisdivinfo>
<synopsis>
LISTEN <replaceable class="PARAMETER">name</replaceable>
</synopsis>

  <refsect2 id="R2-SQL-LISTEN-1">
   <refsect2info>
    <date>1998-10-07</date>
   </refsect2info>
   <title>
    <!-- Inputs -->入力
   </title>

    <variablelist>
     <varlistentry>
      <term><replaceable class="PARAMETER">name</replaceable></term>
      <listitem>
       <para>
	<!-- Name of notify condition. -->
        通知条件の名前です。
       </para>
      </listitem>
     </varlistentry>
    </variablelist>
  </refsect2>

  <refsect2 id="R2-SQL-LISTEN-2">
   <refsect2info>
    <date>1998-09-24</date>
   </refsect2info>
   <title>
    <!-- Outputs -->出力
   </title>

    <variablelist>
     <varlistentry>
      <term><computeroutput>
LISTEN
       </computeroutput></term>
      <listitem>
       <para>
        <!-- 
	Message returned upon successful completion of registration.
        -->
        登録処理が正常終了した場合に返されるメッセージです。

       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><computeroutput>
NOTICE Async_Listen: We are already listening on <replaceable class="PARAMETER">name</replaceable>
       </computeroutput></term>
      <listitem>
       <para>
        <!-- 
	If this backend is already registered for that notify condition.
        -->

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

       </para>
      </listitem>
     </varlistentry>
    </variablelist>
  </refsect2>
 </refsynopsisdiv>

 <refsect1 id="R1-SQL-LISTEN-1">
  <refsect1info>
   <date>1998-10-07</date>
  </refsect1info>
  <title>
   <!-- Description -->説明
  </title>

  <para>
   <!--  
   <command>LISTEN</command> registers the current 
   <productname>Postgres</productname> backend as a
   listener on the notify condition
   <replaceable class="PARAMETER">name</replaceable>. -->

   <command>LISTEN</command>は、現在の<productname>Postgres</productname>バックエンドを、通知条件<replaceable class="PARAMETER">name</replaceable>のリスナとして登録します。

  </para>

  <para>
   <!-- Whenever the command 
   <command>NOTIFY <replaceable class="PARAMETER">name</replaceable></command>
   is invoked, either by this backend or another one connected to
   the same database, all the backends currently listening on that notify
   condition are notified, and each will in turn notify its connected
   frontend application.  See the discussion of <command>NOTIFY</command>
   for more information. -->

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

  </para>

  <para>
   <!-- 
   A backend can be unregistered for a given notify condition with the
   <command>UNLISTEN</command> command.  Also, a backend's listen 
   registrations are automatically cleared when the backend 
   process exits. -->

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

  </para>

  <para>
   <!-- 
   The method a frontend application must use to detect notify
   events depends on which <productname>Postgres</productname> 
   application programming interface it uses.  With the basic libpq 
   library, the application issues <command>LISTEN</command> as an 
   ordinary SQL command, and then must periodically call the 
   routine <function>PQnotifies</function> to find out
   whether any notify events have been received.  Other interfaces 
   such as libpgtcl provide higher-level methods for handling notify 
   events; indeed, with libpgtcl the application programmer should 
   not even issue <command>LISTEN</command> or 
   <command>UNLISTEN</command> directly.  See the
   documentation for the library you are using for more details.
   -->

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

  </para>

  <para>
   <!-- <xref linkend="sql-notify" endterm="sql-notify-title">
   contains a more extensive
   discussion of the use of <command>LISTEN</command> and
   <command>NOTIFY</command>. -->

   <xref linkend="sql-notify" endterm="sql-notify-title">には、<command>LISTEN</command>と<command>NOTIFY</command>の使用方法に関するより広範な記述があります。
  </para>

  <refsect2 id="R2-SQL-LISTEN-3">
   <refsect2info>
    <date>1998-10-07</date>
   </refsect2info>
   <title>
    <!-- Notes -->注釈
   </title>

   <para>
    <!-- <replaceable class="PARAMETER">name</replaceable>
    can be any string valid as a name;
    it need not correspond to the name of any actual table.  If
    <replaceable class="PARAMETER">notifyname</replaceable>
    is enclosed in double-quotes, it need not even be a syntactically
    valid name, but can be any string up to 31 characters long.
    -->

    <replaceable class="PARAMETER">name</replaceable>は、名前としてどんな文字列でも指定できます。実テーブルの名前に対応させる必要はありません。<replaceable class="PARAMETER">notifyname</replaceable>が二重引用符で囲まれていた場合は、文法的に有効なものである必要すらありません。しかし、その長さは31文字までの任意の文字列という制限があります。

   </para>
   <para>
    <!-- In some previous releases of
    <productname>Postgres</productname>,
    <replaceable class="PARAMETER">name</replaceable>
    had to be enclosed in double-quotes when it did not correspond 
    to any existing table name, even if syntactically valid as a 
    name.  That is no longer required. -->

    以前の<productname>Postgres</productname>のリリースには、<replaceable class="PARAMETER">name</replaceable>が文法的には有効であっても既存のテーブル名に対応していない場合は二重引用符で囲まなければなりませんでした。これは現在は不要です。


   </para>
  </refsect2>
 </refsect1>

 <refsect1 id="R1-SQL-LISTEN-2">
  <title>
   <!-- Usage -->使用方法
  </title>
  <para>
   <!-- Configure and execute a listen/notify sequence from 
   <application>psql</application>: -->

   <application>psql</application>から監視/通知処理の設定と実行を行うには以下のようにします。 
</para>

<programlisting>
LISTEN virtual;
NOTIFY virtual;

Asynchronous NOTIFY 'virtual' from backend with pid '8448' received.
</programlisting>
 </refsect1>

 <refsect1 id="R1-SQL-LISTEN-3">
  <title>
   <!-- Compatibility -->互換性
  </title>

  <refsect2 id="R2-SQL-LISTEN-4">
   <refsect2info>
    <date>1998-09-01</date>
   </refsect2info>
   <title>
    SQL92
   </title>
   <para>
    <!-- 
    There is no <command>LISTEN</command> in <acronym>SQL92</acronym>.
    -->
    <acronym>SQL92</acronym>に<command>LISTEN</command>はありません。

   </para>
  </refsect2>
 </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:"/usr/lib/sgml/catalog"
sgml-local-ecat-files:nil
End:
-->
