summaryrefslogtreecommitdiff
path: root/doc/src/sgml/ref/update.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/ref/update.sgml')
-rw-r--r--doc/src/sgml/ref/update.sgml278
1 files changed, 105 insertions, 173 deletions
diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml
index 3825be5bc1..af7d8cce30 100644
--- a/doc/src/sgml/ref/update.sgml
+++ b/doc/src/sgml/ref/update.sgml
@@ -1,5 +1,5 @@
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/update.sgml,v 1.20 2002/08/15 02:59:18 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/update.sgml,v 1.21 2003/04/26 23:56:51 petere Exp $
PostgreSQL documentation
-->
@@ -8,204 +8,136 @@ PostgreSQL documentation
<refentrytitle id="SQL-UPDATE-TITLE">UPDATE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
+
<refnamediv>
- <refname>
- UPDATE
- </refname>
- <refpurpose>
- update rows of a table
- </refpurpose>
+ <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> [, ...]
+<synopsis>
+UPDATE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> SET <replaceable class="PARAMETER">column</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. If
- <literal>ONLY</> is specified, only that table is updated. If
- <literal>ONLY</> is not specified, the table and all its
- descendant tables (if any) are updated. <literal>*</> can be
- appended to the table name to indicate that descendant tables are
- to be scanned, but in the current version, this is the default
- behavior. (In releases before 7.1, <literal>ONLY</> was the
- default behavior.) The default can be altered by changing the
- <option>SQL_INHERITANCE</option> configuration option.
- </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>
+</synopsis>
</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>
+ <refsect1>
+ <title>Description</title>
<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.
+ <command>UPDATE</command> changes the values of the specified
+ columns in all rows that satisfy the condition. Only the columns to
+ be modified need appear as columns in the statement.
</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.
+ By default, <command>UPDATE</command> will update rows in the
+ specified table and all its subtables. If you wish to only update
+ the specific table mentioned, you must use the <literal>ONLY</>
+ clause.
</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.
+ You must have the <literal>UPDATE</literal> privilege on the table
+ to update it, as well as the <literal>SELECT</literal>
+ privilege to any table whose values are read in the <replaceable
+ class="parameter">condition</replaceable>.
</para>
</refsect1>
- <refsect1 id="R1-SQL-UPDATE-2">
- <title>
- Usage
- </title>
+ <refsect1>
+ <title>Parameters</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><replaceable class="PARAMETER">table</replaceable></term>
+ <listitem>
+ <para>
+ The name (optionally schema-qualified) of the table to update.
+ </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>
+ An expression or value to assign to the column.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable class="PARAMETER">fromlist</replaceable></term>
+ <listitem>
+ <para>
+ A list of table expressions, allowing columns from other tables
+ to appear in the <literal>WHERE</> condition.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable class="PARAMETER">condition</replaceable></term>
+ <listitem>
+ <para>
+ A value expression that returns a value of type
+ <type>boolean</type> that determines the rows which are to be
+ updated.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Diagnostics</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><computeroutput>UPDATE <replaceable class="parameter">count</replaceable></computeroutput></term>
+ <listitem>
+ <para>
+ Message returned if successful. The value <replaceable
+ class="parameter">count</replaceable> is the number of rows
+ updated. If <replaceable class="parameter">count</replaceable>
+ is 0, no rows were updated.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Examples</title>
<para>
- Change word <literal>Drama</> with <literal>Dramatic</> on column <structfield>kind</>:
+ Change the word <literal>Drama</> to <literal>Dramatic</> in the
+ column <structfield>kind</> of the table <literal>films</literal>:
<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
+UPDATE filme SET kind = 'Dramatic' WHERE kind = 'Drama';
</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>
+ <title>Compatibility</title>
+
+ <para>
+ This command conforms to the SQL standard. The
+ <literal>FROM</literal> clause is a PostgreSQL extension.
+ </para>
</refsect1>
</refentry>