<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/update.sgml,v 1.19 2002/04/23 02:07:16 tgl Exp $ PostgreSQL documentation --> <refentry id="SQL-UPDATE"> <refmeta> <refentrytitle id="SQL-UPDATE-TITLE">UPDATE</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> <refnamediv> <refname> UPDATE </refname> <refpurpose> update rows of a table </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> <para> <variablelist> <varlistentry> <term><replaceable class="PARAMETER">table</replaceable></term> <listitem> <para> The name (optionally schema-qualified) 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>. </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>PostgreSQL</productname> non-standard extension to allow columns from other tables to appear in the WHERE condition. </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. </para> </listitem> </varlistentry> </variablelist> </para> </refsect2> <refsect2 id="R2-SQL-UPDATE-2"> <refsect2info> <date>1998-09-24</date> </refsect2info> <title> Outputs </title> <para> <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. </para> </listitem> </varlistentry> </variablelist> </para> </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. </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. </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. </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. </para> </refsect1> <refsect1 id="R1-SQL-UPDATE-2"> <title> Usage </title> <para> Change word <literal>Drama</> with <literal>Dramatic</> on column <structfield>kind</>: <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> </para> </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: <synopsis> UPDATE <replaceable>table</replaceable> SET <replaceable>column</replaceable> = <replaceable>expression</replaceable> [, ...] WHERE CURRENT OF <replaceable class="parameter">cursor</replaceable> </synopsis> where <replaceable class="parameter">cursor</replaceable> identifies an open cursor. </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: -->