<!--
$Header: /usr/prj/pg/cvsroot/doc/doc/src/sgml/ref/update.sgml,v 1.4 2001/07/13 01:09:35 k-kondo Exp $
Postgres documentation
-->

<refentry id="SQL-UPDATE">
 <refmeta>
  <refentrytitle id="SQL-UPDATE-TITLE">
   UPDATE
  </refentrytitle>
  <refmiscinfo>SQL<!-- - Language Statements-->言語</refmiscinfo>
 </refmeta>
 <refnamediv>
  <refname>
   UPDATE
  </refname>
  <refpurpose>
   <!--Replaces values of columns in a table-->

   テーブル内のカラムの値を置き換えます。<indexterm><primary>UPDATE</primary></indexterm><indexterm><primary>SQL</primary><secondary>UPDATE</secondary></indexterm><indexterm><primary sortas="てーぶる">テーブル</primary><secondary sortas="でーたのこうしん">データの更新</secondary></indexterm>

  </refpurpose>
 </refnamediv>
 <refsynopsisdiv>
  <refsynopsisdivinfo>
   <date>1999-07-20</date>
  </refsynopsisdivinfo>
<synopsis>
UPDATE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> SET <replaceable class="PARAMETER">col</replaceable> = <replaceable class="PARAMETER">expression</replaceable> [, ...]
    [ FROM <replaceable class="PARAMETER">fromlist</replaceable> ]
    [ WHERE <replaceable class="PARAMETER">condition</replaceable> ]
</synopsis>

  <refsect2 id="R2-SQL-UPDATE-1">
   <refsect2info>
    <date>1998-09-24</date>
   </refsect2info>
   <title>
    <!--Inputs-->入力
   </title>

    <variablelist>
     <varlistentry>
      <term><replaceable class="PARAMETER">table</replaceable></term>
      <listitem>
       <para>
	<!--The name of an existing table.-->
        既存のテーブルの名前です。

       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable class="PARAMETER">column</replaceable></term>
      <listitem>
       <para>
	<!--The name of a column in <replaceable class="PARAMETER">table</replaceable>.-->
        <replaceable class="PARAMETER">table</replaceable>内の列名です。

       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable class="PARAMETER">expression</replaceable></term>
      <listitem>
       <para>
	<!--A valid expression or value to assign to column.-->
        列に代入する有効な式または値です。
       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable class="PARAMETER">fromlist</replaceable></term>
      <listitem>
       <para>
	<!--A <productname>Postgres</productname>
	non-standard extension to allow columns
	from other tables to appear in the WHERE condition.-->

        WHERE条件に他のテーブル上の列を指定できるようにする<productname>Postgres</productname>の非標準的拡張です。

       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable class="PARAMETER">condition</replaceable></term>
      <listitem>
       <para>
	<!--Refer to the SELECT statement for a further description
	of the WHERE clause.-->

       WHERE句の詳細な説明についてはSELECT文を参照してください。

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

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

    <variablelist>
     <varlistentry>
      <term><computeroutput>
UPDATE <replaceable class="parameter">#</replaceable>
      </computeroutput></term>
      <listitem>
       <para>
	<!--Message returned if successful.
	The <replaceable class="parameter">#</replaceable>
	means the number of rows updated.
	If <replaceable class="parameter">#</replaceable>
	is 0 no rows are updated.-->

        成功した場合に返されるメッセージです。「<replaceable class="parameter">#</replaceable>」は更新された行数を意味します。「<replaceable class="parameter">#</replaceable>」が0の場合は更新された行がなかったことを意味します。

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

 <refsect1 id="R1-SQL-UPDATE-1">
  <refsect1info>
   <date>1998-09-24</date>
  </refsect1info>
  <title>
   <!--Description-->説明
  </title>
  <para>
   <!--<command>UPDATE</command> changes the values of the columns specified for
   all rows which satisfy condition. Only the columns 
   to be modified need appear as columns in the statement.-->

   <command>UPDATE</command>は、条件を満たすすべての行の指定された列の値を変更します。変更されるべき列のみが文内のcolumnsパラメータにある必要があります。

  </para>

  <para>
   <!--Array references use the same syntax found in
   <xref linkend="sql-select" endterm="sql-select-title">.
   That is, either single array elements, a range of array
   elements or the entire array may be replaced with a single
   query.-->

   <xref linkend="sql-select" endterm="sql-select-title">と同じ文法を使って配列を参照します。つまり、1つの配列要素も、ある範囲にわたる配列要素も、配列全体も1つの問い合わせで更新することができます。

  </para>

  <para>
   <!--You must have write access to the table in order to modify
   it, as well as read access to any table whose values are
   mentioned in the WHERE condition.-->

   テーブルを変更するためには書き込み権限が必要です。あわせて、WHERE条件内で指定した値を持つテーブルへの読み込み権限も必要になります。

  </para>

  <para>
  <!--By default UPDATE will update tuples in the table specified 
  and all its sub-tables. If you wish to only update the
  specific table mentioned, you should use the ONLY clause.-->

  デフォルトで、UPDATEは指定されたテーブルとそのサブテーブルのタプルを更新します。指定されたテーブルのみを更新したい場合はONLY句を使用してください。

  </para>
 </refsect1>

 <refsect1 id="R1-SQL-UPDATE-2">
  <title>
   <!--Usage-->使用方法
  </title>

  <para>
   <!--Change word "Drama" with "Dramatic" on column kind:-->
   kind列上の「Drama」という単語を「Dramatic」に変更するには以下のようにします。
</para>

<programlisting>
UPDATE films 
SET kind = 'Dramatic' 
WHERE kind = 'Drama';
SELECT * 
FROM films 
WHERE kind = 'Dramatic' OR kind = 'Drama';

 code  |     title     | did | date_prod  |   kind   | len
-------+---------------+-----+------------+----------+-------
 BL101 | The Third Man | 101 | 1949-12-23 | Dramatic | 01:44
 P_302 | Becket        | 103 | 1964-02-03 | Dramatic | 02:28
 M_401 | War and Peace | 104 | 1967-02-12 | Dramatic | 05:57
 T_601 | Yojimbo       | 106 | 1961-06-16 | Dramatic | 01:50
 DA101 | Das Boot      | 110 | 1981-11-11 | Dramatic | 02:29
</programlisting>
 </refsect1>

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

  <refsect2 id="R2-SQL-UPDATE-4">
   <refsect2info>
    <date>1998-09-24</date>
   </refsect2info>
   <title>
    SQL92
   </title>
   <para>
    <!--<acronym>SQL92</acronym> defines a different syntax for
    the positioned UPDATE statement:-->

    <acronym>SQL92</acronym>では位置付け型UPDATE文用の異なる構文を定義しています。
</para>

<synopsis>
UPDATE <replaceable>table</replaceable> SET <replaceable>column</replaceable> = <replaceable>expression</replaceable> [, ...]
    WHERE CURRENT OF <replaceable class="parameter">cursor</replaceable>
</synopsis>


<para>
    <!--where <replaceable class="parameter">cursor</replaceable>
    identifies an open cursor.-->

    ここで、<replaceable class="parameter">cursor</replaceable>はオープン済みのカーソルの識別子です。

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