<!--
$Header: /usr/prj/pg/cvsroot/doc/doc/src/sgml/ref/set.sgml,v 1.5 2001/09/14 08:44:27 t-ishii Exp $
Postgres documentation
-->

<refentry id="SQL-SET">
 <refmeta>
  <refentrytitle id="SQL-SET-TITLE">SET</refentrytitle>
  <refmiscinfo>SQL<!-- Language Statements -->言語</refmiscinfo>
 </refmeta>
 <refnamediv>
  <refname>SET</refname>
  <refpurpose><!-- Set run-time parameters -->
   実行時パラメータを設定します。<indexterm><primary>SET</primary></indexterm><indexterm><primary>SQL</primary><secondary>SET</secondary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary sortas="せってい">設定</secondary></indexterm>
</refpurpose>
 </refnamediv>
 <refsynopsisdiv>
<synopsis>
SET <replaceable class="PARAMETER">variable</replaceable> { TO | = } { <replaceable class="PARAMETER">value</replaceable> | '<replaceable class="PARAMETER">value</replaceable>' | DEFAULT }
SET TIME ZONE { '<replaceable class="PARAMETER">timezone</replaceable>' | LOCAL | DEFAULT }
</synopsis>

  <refsect2 id="R2-SQL-SET-1">
   <title><!-- Inputs -->入力</title>
    <variablelist>
     <varlistentry>
      <term><replaceable class="PARAMETER">variable</replaceable></term>
      <listitem>
       <para>
	<!-- A settable run-time parameter. -->設定可能な実行時パラメータです。
       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable class="PARAMETER">value</replaceable></term>
      <listitem>
       <para>
	<!-- New value of parameter.  <option>DEFAULT</option> can be
	used to specify resetting the parameter to its default
	value. Lists of strings are allowed, but more complex
	constructs may need to be single or double quoted. -->

        パラメータの新しい値です。パラメータをデフォルト値に再設定するために<option>DEFAULT</option>を使うことができます。文字列のリストを使うこともできますが、その要素が複雑な場合、単一又は二重引用符で囲む必要があります。

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

 </refsynopsisdiv>
 
 <refsect1 id="R1-SQL-SET-1">
  <title><!-- Description -->説明</title>
  <para>
   <!-- The <command>SET</command> command changes run-time configuration
   parameters. The following parameters can be altered: -->

   <command>SET</command>コマンドは、実行時設定パラメータを変更します。以下のパラメータを変更することができます。
</para>

   <variablelist>
    <varlistentry>
     <term>CLIENT_ENCODING<indexterm><primary>CLIENT_ENCODING</primary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary>CLIENT_ENCODING</secondary></indexterm></term>
     <term>NAMES<indexterm><primary>NAMES</primary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary>NAMES</secondary></indexterm></term>
     <listitem>
      <para>
       <!-- Sets the multibyte client encoding. The specified encoding
       must be supported by the backend. -->

       クライアント側のマルチバイトエンコーディングを設定します。指定されたエンコードはバックエンドでサポートされていなければいけません。

      </para>

      <para>
       <!-- This option is only available if
       <productname>Postgres</productname> is build with multibyte
       support. -->

       このオプションは<productname>Postgres</productname>がマルチバイトサポートで構築されている場合のみ有効です。

      </para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term>DATESTYLE<indexterm><primary>DATESTYLE</primary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary>DATESTYLE</secondary></indexterm></term>
     <listitem>
      <para>
       <!-- 
       Choose the date/time representation style. Two separate
       settings are made: the default date/time output and the
       interpretation of ambiguous input. -->

       日付/時間表示様式を選択します。2つの個別の設定が行われます。デフォルトの日付/時間出力と不明瞭な入力の解釈です。

      </para>

      <para>
       <!-- The following are date/time output styles: -->
       以下は日付/時間出力の様式です。
</para>

       <variablelist>
	<varlistentry>
	 <term>ISO</term>
	 <listitem>
	  <para>
           <!-- 
	   Use ISO 8601-style dates and times (<literal>YYYY-MM-DD
	   HH:MM:SS</literal>). This is the default. -->

           ISO 8601様式の日付と時間を使います（<literal>YYYY-MM-DD HH:MM:SS</literal>）。これがデフォルトです。

          </para>
	 </listitem>
	</varlistentry>

        <varlistentry>
	 <term>SQL</term>
	 <listitem>
	  <para>
           <!-- 
	   Use Oracle/Ingres-style dates and times. Note that this
	   style has nothing to do with SQL (which mandates ISO 8601
	   style), the naming of this option is a historical accident.
           -->

           Oracle/Ingres様式の日付と時間を使います。この様式はSQL（ISO 8601様式）とは無関係で、このオプションの名前は歴史的偶然によって付けられました。

	  </para>
	 </listitem>
	</varlistentry>

        <varlistentry>
	 <term>Postgres</term>
	 <listitem>
	  <para>
	   <!-- Use traditional <productname>Postgres</productname> format.
           -->
           伝統的な<productname>Postgres</productname>の形式を使います。
           
	  </para>
	 </listitem>
	</varlistentry>

        <varlistentry>
	 <term>German</term>
	 <listitem>
	  <para>
	   <!-- 
           Use <literal>dd.mm.yyyy</literal> for numeric date representations.
           -->

           数値型の日付表示に<literal>dd.mm.yyyy</literal>を使います。
 
	  </para>
	 </listitem>
	</varlistentry>
       </variablelist>

      <para>
       <!-- 
       The following two options determine both a substyle of the
       <quote>SQL</quote> and <quote>Postgres</quote> output formats
       and the preferred interpretation of ambiguous date input.
       -->

       以下の2つのオプションは、<quote>SQL</quote>のサブスタイル、<quote>Postgres</quote>の出力フォーマット、不明瞭な日付入力の好ましい解釈を決定します。
</para>

       <variablelist>
	<varlistentry>
	 <term>European</term>
	 <listitem>
	  <para>
           <!-- 
	   Use <literal>dd/mm/yyyy</literal> for numeric date representations.
           -->
           数値型の日付表示に<literal>dd/mm/yyyy</literal>を使います。

	  </para>
	 </listitem>
	</varlistentry>

        <varlistentry>
	 <term>NonEuropean</term>
	 <term>US</term>
	 <listitem>
	  <para>
           <!-- 
	   Use <literal>mm/dd/yyyy</literal> for numeric date representations.
           -->

           数値型の日付表示に<literal>mm/dd/yyyy</literal>を使います。
 
	  </para>
	 </listitem>
	</varlistentry>
       </variablelist>

      <para>
       <!-- A value for <command>SET DATESTYLE</command> can be one from
       the first list (output styles), or one from the second list
       (substyles), or one from each separated by a comma. -->

       <command>SET DATESTYLE</command>の値は最初のリスト（出力様式）、もしくは2番目のリスト（サブスタイル）のどれか、もしくはそれぞれのカンマで区切られたもののどれかを使うことが可能です。

      </para>

      <para>
       <!-- Date format initialization may be done by: -->
       日付フォーマットの初期化は下記のように行うことができます。
</para>

       <simplelist>
	<member>
         <!-- 
	 Setting the <envar>PGDATESTYLE</envar> environment variable.
	 If PGDATESTYLE is set in the frontend environment of a client
	 based on libpq, libpq will automatically set DATESTYLE to the
	 value of PGDATESTYLE during connection start-up. -->

         環境変数<envar>PGDATESTYLE</envar>を設定します。もしPGDATESTYLEがlibpqに基づくクライアントのフロントエンド環境で設定されると、libpqは自動的にDATESTYLEを接続開始の間にPGDATESTYLEに設定します。

	</member>
	<member>
         <!-- 
	 Running postmaster using the option <option>-o -e</option> to
	 set dates to the <literal>European</literal> convention. -->

         日付を<literal>European</literal>既定に設定するようにオプション<option>-o -e</option>を使ってpostmasterを起動します。

	</member>
       </simplelist>

      <para>
       <!-- 
       The <option>DateStyle</option> option is really only intended
       for porting applications. To format your date/time values to
       choice, use the <function>to_char</function> family of
       functions. -->

       <option>DateStyle</option>オプションは、アプリケーションの移植のためだけに意図されたものです。日付/時間の値を選択したものにフォーマットするためには、関数の<function>to_char</function>ファミリを使います。

      </para>
     </listitem>
    </varlistentry>

     <varlistentry>
      <term>SEED<indexterm><primary>SEED</primary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary>SEED</secondary></indexterm></term>
      <listitem>
       <para>
	<!-- Sets the internal seed for the random number generator. -->
        乱数発生のための内部シードを設定します。
	</para>

	<variablelist>
	 <varlistentry>
	  <term><replaceable class="parameter">value</replaceable></term>
	  <listitem>
	   <para>
	    <!-- The value for the seed to be used by the
	    <function>random</function> function. Allowed
	    values are floating point numbers between 0 and 1, which
	    are then multiplied by 2^31-1. This product will
	    silently overflow if a number outside the range is used.
            -->

            <function>random</function>関数が使うシードの値です。認められる値は0から1までの浮動小数点の数で、2^31-1で積算されます。この積は、もし範囲外の数が使われると警告なしでオーバーフローします。

	   </para>

	   <para>
	    <!-- The seed can also be set by invoking the
	    <function>setseed</function> SQL function: -->

            シードはSQL関数の<function>setseed</function>を呼び出すことによっても設定できます。
</para>


<programlisting>
SELECT setseed(<replaceable>value</replaceable>);
</programlisting>
	  </listitem>
	 </varlistentry>
	</variablelist>

      </listitem>
     </varlistentry>

     <varlistentry>
      <term>SERVER_ENCODING<indexterm><primary>SERVER_ENCODING</primary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary>SERVER_ENCODING</secondary></indexterm></term>
      <listitem>
       <para>
	<!-- Sets the multibyte server encoding. -->
        サーバー側のマルチバイトエンコーディングを設定します。
       </para>

       <para>
	<!-- This option is only available if
	<productname>Postgres</productname> was built with multibyte
	support. -->

        このオプションは、<productname>Postgres</productname>がマルチバイトサポートを使って構築された場合にのみ有効です。

       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term>TIME ZONE<indexterm><primary>TIME ZONE</primary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary>TIME ZONE</secondary></indexterm></term>
      <term>TIMEZONE<indexterm><primary>TIMEZONE</primary></indexterm><indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary>TIMEZONE</secondary></indexterm></term>
      <listitem>
       <para>
        <!-- 
	The possible values for time zone depends on your operating
	system. For example, on Linux
	<filename>/usr/share/zoneinfo</filename> contains the database
	of time zones. -->

        タイムゾーンの可能な値は、使用しているオペレーティングシステムによって異なります。たとえば、Linuxでは<filename>/usr/share/zoneinfo</filename>にタイムゾーンのデータベースがあります。

       </para>
       <para>
	<!-- Here are some valid values for time zone: -->
        以下に、タイムゾーンのいくつかの有効な値を挙げます。
</para>

	<variablelist>
	 <varlistentry>
	  <term>PST8PDT</term>
	  <listitem>
	   <para>
	    <!-- Set the time zone for California. -->
            タイムゾーンをカリフォルニアに設定します。
	   </para>
	  </listitem>
	 </varlistentry>
	 <varlistentry>
	  <term>Portugal</term>
	  <listitem>
	   <para>
	    <!-- Set time zone for Portugal. -->
            タイムゾーンをポルトガルに設定します。
	   </para>
	  </listitem>
	 </varlistentry>
	 <varlistentry>
	  <term>'Europe/Rome'</term>
	  <listitem>
	   <para>
	    <!-- Set time zone for Italy. -->
            タイムゾーンをイタリアに設定します。
	   </para>
	  </listitem>
	 </varlistentry>
	 <varlistentry>
	  <term>LOCAL</term>
          <term>DEFAULT</term>
	  <listitem>
	   <para>
            <!--  
	    Set the time zone to your local time zone (the one that
	    your operating system defaults to). -->

            タイムゾーンをユーザーのローカルタイムゾーン（使用しているオペレーティングシステムにデフォルトとして設定されているもの）に設定します。

	   </para>
	  </listitem>
	 </varlistentry>
	</variablelist>
       <para>
	<!-- If an invalid time zone is specified, the time zone
	becomes GMT (on most systems anyway). -->

        もし無効なタイムゾーンが指定されると、（ほとんどのシステムでは）タイムゾーンはGMTに設定されます。

       </para>
       <para>
        <!-- 
        If the PGTZ environment variable is set in the frontend
	environment of a client based on libpq, libpq will automatically
	set TIMEZONE to the value of PGTZ during connection start-up.
        -->

        もしPGTZ環境変数がlibpqに基づくクライアントのフロントエンド環境に設定されている場合libpqは接続を開始する間に自動的にTIMEZONEをPGTZの値に設定します。 

       </para>
      </listitem>
     </varlistentry>

    </variablelist>

  <para>
   <!--   
   An extended list of other run-time parameters can be found in the
   <citetitle>Administrator's Guide</citetitle>. -->

   他の実行時パラメータの拡張されたリストは<citetitle>&admin-guide;</citetitle>で見ることができます。

  </para>

  <para>
   <!-- 
   Use <xref linkend="SQL-SHOW" endterm="SQL-SHOW-title"> to show the
   current setting of a parameters. -->

   現在のパラメータの設定を表示するために<xref linkend="SQL-SHOW" endterm="SQL-SHOW-title">を使います。

  </para>
  
 </refsect1>

 <refsect1>
  <title><!-- Diagnostics -->診断</title>
    
   <variablelist>
    <varlistentry>
     <term><computeroutput>SET VARIABLE</computeroutput></term>
     <listitem>
      <para>
       <!-- Message returned if successful. -->
       成功した場合に返されるメッセージです。
      </para>
     </listitem>
    </varlistentry>
     
    <varlistentry>
     <term><computeroutput>ERROR:  not a valid option name: <replaceable>name</replaceable></computeroutput></term>
     <listitem>
      <para>
       <!-- The parameter you tried to set does not exist. -->
       設定しようとしたパラメータは存在しません。

      </para>
     </listitem>
    </varlistentry>
     
    <varlistentry>
     <term><computeroutput>ERROR:  permission denied</computeroutput></term>
     <listitem>
      <para>
       <!-- You must be a superuser to have access to certain settings. -->
       特定の設定にアクセスするためにはスーパーユーザーでなくてはいけません。
      </para>
     </listitem>
    </varlistentry>
     
    <varlistentry>
     <term><computeroutput>ERROR:  <replaceable>name</replaceable> can only be set at start-up</computeroutput></term>
     <listitem>
      <para>
       <!-- Some parameters are fixed once the server is started. -->
       サーバーが起動されると、いくつかのパラメータが固定されます。
      </para>
     </listitem>
    </varlistentry>
     
   </variablelist>
 </refsect1>

 
 <refsect1>
  <title><!-- Examples -->例</title>
<indexterm><primary sortas="ぱらめーた">パラメータ</primary><secondary sortas="れい">例</secondary></indexterm>
  <para>
   <!-- 
   Set the style of date to traditional Postgres with European conventions:
   -->

   日付の様式を伝統的PostgresのEuropean形式に設定するには以下のようにします。
</para>

<screen>
SET DATESTYLE TO Postgres,European;
</screen>

<para>
   <!-- 
   Set the time zone for Berkeley, California, using double quotes to
   preserve the uppercase attributes of the time zone specifier (note
   that the date/time format is ISO here): -->


   タイムゾーンをカリフォルニア/バークレイに設定するには以下のようにします（ここでは日付/時間フォーマットがISOであることに注意してください）
</para>

<screen> 
SET TIME ZONE 'PST8PDT';
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 07:41:21-08
</screen>

<para>
   <!-- Set the time zone for Italy (note the required single or double 
   quotes to handle the special characters): -->
 
   タイムゾーンをイタリアに設定するには以下のようにします。
</para>

<screen> 
SET TIME ZONE 'Europe/Rome';
SELECT CURRENT_TIMESTAMP AS today;
   
         today
------------------------
 1998-03-31 17:41:31+02
</screen>
 </refsect1>

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

  <refsect2 id="R2-SQL-SET-4">
   <title>
    SQL92
   </title>

   <para>
    <!-- 
    The second syntax shown above (<literal>SET TIME ZONE</literal>)
    attempts to mimic <acronym>SQL92</acronym>. However, SQL allows
    only numeric time zone offsets. All other parameter settings as
    well as the first syntax shown above are a
    <productname>Postgres</productname> extension. -->

    上記で示された二番目の構文（<literal>SET TIME ZONE</literal>）は<acronym>SQL92</acronym>を真似しようとしています。しかし、SQLは数値タイムゾーンオフセットのみを認めます。上記で示される最初の構文と他のすべてのパラメータ設定は、<productname>Postgres</productname>の拡張です。

   </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:
-->
