1999-07-22 17:09:15 +02:00
|
|
|
<!--
|
2010-09-20 22:08:53 +02:00
|
|
|
doc/src/sgml/ref/update.sgml
|
2001-12-08 04:24:40 +01:00
|
|
|
PostgreSQL documentation
|
1999-07-22 17:09:15 +02:00
|
|
|
-->
|
|
|
|
|
1999-07-14 22:32:59 +02:00
|
|
|
<refentry id="SQL-UPDATE">
|
|
|
|
<refmeta>
|
2010-04-03 09:23:02 +02:00
|
|
|
<refentrytitle>UPDATE</refentrytitle>
|
2008-11-14 11:22:48 +01:00
|
|
|
<manvolnum>7</manvolnum>
|
1999-07-14 22:32:59 +02:00
|
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
|
|
</refmeta>
|
2003-04-27 01:56:51 +02:00
|
|
|
|
1999-07-14 22:32:59 +02:00
|
|
|
<refnamediv>
|
2003-04-27 01:56:51 +02:00
|
|
|
<refname>UPDATE</refname>
|
|
|
|
<refpurpose>update rows of a table</refpurpose>
|
1999-07-14 22:32:59 +02:00
|
|
|
</refnamediv>
|
2003-04-27 01:56:51 +02:00
|
|
|
|
2003-08-31 19:32:24 +02:00
|
|
|
<indexterm zone="sql-update">
|
|
|
|
<primary>UPDATE</primary>
|
|
|
|
</indexterm>
|
|
|
|
|
1999-07-14 22:32:59 +02:00
|
|
|
<refsynopsisdiv>
|
2003-04-27 01:56:51 +02:00
|
|
|
<synopsis>
|
2006-01-22 06:20:35 +01:00
|
|
|
UPDATE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> [ [ AS ] <replaceable class="parameter">alias</replaceable> ]
|
2006-09-04 00:37:06 +02:00
|
|
|
SET { <replaceable class="PARAMETER">column</replaceable> = { <replaceable class="PARAMETER">expression</replaceable> | DEFAULT } |
|
|
|
|
( <replaceable class="PARAMETER">column</replaceable> [, ...] ) = ( { <replaceable class="PARAMETER">expression</replaceable> | DEFAULT } [, ...] ) } [, ...]
|
2009-09-19 12:23:27 +02:00
|
|
|
[ FROM <replaceable class="PARAMETER">from_list</replaceable> ]
|
2007-06-11 03:16:30 +02:00
|
|
|
[ WHERE <replaceable class="PARAMETER">condition</replaceable> | WHERE CURRENT OF <replaceable class="PARAMETER">cursor_name</replaceable> ]
|
2008-02-15 23:17:06 +01:00
|
|
|
[ RETURNING * | <replaceable class="parameter">output_expression</replaceable> [ [ AS ] <replaceable class="parameter">output_name</replaceable> ] [, ...] ]
|
2003-04-27 01:56:51 +02:00
|
|
|
</synopsis>
|
1999-07-14 22:32:59 +02:00
|
|
|
</refsynopsisdiv>
|
|
|
|
|
2003-04-27 01:56:51 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Description</title>
|
1999-07-14 22:32:59 +02:00
|
|
|
|
|
|
|
<para>
|
2003-04-27 01:56:51 +02:00
|
|
|
<command>UPDATE</command> changes the values of the specified
|
|
|
|
columns in all rows that satisfy the condition. Only the columns to
|
2004-03-03 23:22:24 +01:00
|
|
|
be modified need be mentioned in the <literal>SET</literal> clause;
|
|
|
|
columns not explicitly modified retain their previous values.
|
1999-07-14 22:32:59 +02:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2003-04-27 01:56:51 +02:00
|
|
|
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.
|
1999-07-14 22:32:59 +02:00
|
|
|
</para>
|
2000-06-09 03:44:34 +02:00
|
|
|
|
2004-03-03 23:22:24 +01:00
|
|
|
<para>
|
|
|
|
There are two ways to modify a table using information contained in
|
|
|
|
other tables in the database: using sub-selects, or specifying
|
|
|
|
additional tables in the <literal>FROM</literal> clause. Which
|
|
|
|
technique is more appropriate depends on the specific
|
|
|
|
circumstances.
|
|
|
|
</para>
|
|
|
|
|
2006-08-12 04:52:06 +02:00
|
|
|
<para>
|
|
|
|
The optional <literal>RETURNING</> clause causes <command>UPDATE</>
|
|
|
|
to compute and return value(s) based on each row actually updated.
|
|
|
|
Any expression using the table's columns, and/or columns of other
|
|
|
|
tables mentioned in <literal>FROM</literal>, can be computed.
|
|
|
|
The new (post-update) values of the table's columns are used.
|
|
|
|
The syntax of the <literal>RETURNING</> list is identical to that of the
|
|
|
|
output list of <command>SELECT</>.
|
|
|
|
</para>
|
|
|
|
|
2000-06-09 03:44:34 +02:00
|
|
|
<para>
|
2009-01-22 21:16:10 +01:00
|
|
|
You must have the <literal>UPDATE</literal> privilege on the table,
|
|
|
|
or at least on the column(s) that are listed to be updated.
|
|
|
|
You must also have the <literal>SELECT</literal>
|
|
|
|
privilege on any column whose values are read in the
|
2006-01-22 21:34:11 +01:00
|
|
|
<replaceable class="parameter">expressions</replaceable> or
|
2003-07-03 18:34:26 +02:00
|
|
|
<replaceable class="parameter">condition</replaceable>.
|
2000-06-09 03:44:34 +02:00
|
|
|
</para>
|
1999-07-14 22:32:59 +02:00
|
|
|
</refsect1>
|
|
|
|
|
2003-04-27 01:56:51 +02:00
|
|
|
<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>
|
|
|
|
|
2006-01-22 06:20:35 +01:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">alias</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
A substitute name for the target table. When an alias is
|
|
|
|
provided, it completely hides the actual name of the table. For
|
|
|
|
example, given <literal>UPDATE foo AS f</>, the remainder of the
|
|
|
|
<command>UPDATE</command> statement must refer to this table as
|
2006-01-22 21:34:11 +01:00
|
|
|
<literal>f</> not <literal>foo</>.
|
2006-01-22 06:20:35 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2003-04-27 01:56:51 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">column</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2004-06-09 21:08:20 +02:00
|
|
|
The name of a column in <replaceable
|
|
|
|
class="PARAMETER">table</replaceable>.
|
|
|
|
The column name can be qualified with a subfield name or array
|
2006-01-22 21:34:11 +01:00
|
|
|
subscript, if needed. Do not include the table's name in the
|
|
|
|
specification of a target column — for example,
|
|
|
|
<literal>UPDATE tab SET tab.col = 1</> is invalid.
|
2003-04-27 01:56:51 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">expression</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
Update reference documentation on may/can/might:
Standard English uses "may", "can", and "might" in different ways:
may - permission, "You may borrow my rake."
can - ability, "I can lift that log."
might - possibility, "It might rain today."
Unfortunately, in conversational English, their use is often mixed, as
in, "You may use this variable to do X", when in fact, "can" is a better
choice. Similarly, "It may crash" is better stated, "It might crash".
2007-02-01 00:26:05 +01:00
|
|
|
An expression to assign to the column. The expression can use the
|
2003-07-03 18:34:26 +02:00
|
|
|
old values of this and other columns in the table.
|
2003-04-27 01:56:51 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
2003-06-25 06:19:24 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><literal>DEFAULT</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2003-07-03 18:34:26 +02:00
|
|
|
Set the column to its default value (which will be NULL if no
|
|
|
|
specific default expression has been assigned to it).
|
2003-06-25 06:19:24 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
2003-04-27 01:56:51 +02:00
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2009-09-19 12:23:27 +02:00
|
|
|
<term><replaceable class="PARAMETER">from_list</replaceable></term>
|
2003-04-27 01:56:51 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
A list of table expressions, allowing columns from other tables
|
2004-03-03 23:22:24 +01:00
|
|
|
to appear in the <literal>WHERE</> condition and the update
|
|
|
|
expressions. This is similar to the list of tables that can be
|
|
|
|
specified in the <xref linkend="sql-from"
|
|
|
|
endterm="sql-from-title"> of a <command>SELECT</command>
|
2005-01-09 06:57:45 +01:00
|
|
|
statement. Note that the target table must not appear in the
|
2009-09-19 12:23:27 +02:00
|
|
|
<replaceable>from_list</>, unless you intend a self-join (in which
|
|
|
|
case it must appear with an alias in the <replaceable>from_list</>).
|
2003-04-27 01:56:51 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">condition</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2003-07-03 18:34:26 +02:00
|
|
|
An expression that returns a value of type <type>boolean</type>.
|
|
|
|
Only rows for which this expression returns <literal>true</>
|
|
|
|
will be updated.
|
2003-04-27 01:56:51 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2006-08-12 04:52:06 +02:00
|
|
|
|
2007-06-11 03:16:30 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">cursor_name</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The name of the cursor to use in a <literal>WHERE CURRENT OF</>
|
|
|
|
condition. The row to be updated is the one most recently fetched
|
2008-11-16 18:34:28 +01:00
|
|
|
from this cursor. The cursor must be a non-grouping
|
2007-06-11 03:16:30 +02:00
|
|
|
query on the <command>UPDATE</>'s target table.
|
|
|
|
Note that <literal>WHERE CURRENT OF</> cannot be
|
2008-11-16 18:34:28 +01:00
|
|
|
specified together with a Boolean condition. See
|
2010-04-03 09:23:02 +02:00
|
|
|
<xref linkend="sql-declare">
|
2008-11-16 18:34:28 +01:00
|
|
|
for more information about using cursors with
|
|
|
|
<literal>WHERE CURRENT OF</>.
|
2007-06-11 03:16:30 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2006-08-12 04:52:06 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">output_expression</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
An expression to be computed and returned by the <command>UPDATE</>
|
Update reference documentation on may/can/might:
Standard English uses "may", "can", and "might" in different ways:
may - permission, "You may borrow my rake."
can - ability, "I can lift that log."
might - possibility, "It might rain today."
Unfortunately, in conversational English, their use is often mixed, as
in, "You may use this variable to do X", when in fact, "can" is a better
choice. Similarly, "It may crash" is better stated, "It might crash".
2007-02-01 00:26:05 +01:00
|
|
|
command after each row is updated. The expression can use any
|
2006-08-12 04:52:06 +02:00
|
|
|
column names of the <replaceable class="PARAMETER">table</replaceable>
|
|
|
|
or table(s) listed in <literal>FROM</>.
|
|
|
|
Write <literal>*</> to return all columns.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">output_name</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
A name to use for a returned column.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2003-04-27 01:56:51 +02:00
|
|
|
</variablelist>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1>
|
2003-09-12 02:12:47 +02:00
|
|
|
<title>Outputs</title>
|
2003-04-27 01:56:51 +02:00
|
|
|
|
2003-09-12 02:12:47 +02:00
|
|
|
<para>
|
|
|
|
On successful completion, an <command>UPDATE</> command returns a command
|
|
|
|
tag of the form
|
|
|
|
<screen>
|
|
|
|
UPDATE <replaceable class="parameter">count</replaceable>
|
|
|
|
</screen>
|
|
|
|
The <replaceable class="parameter">count</replaceable> is the number
|
|
|
|
of rows updated. If <replaceable class="parameter">count</replaceable> is
|
|
|
|
0, no rows matched the <replaceable
|
|
|
|
class="parameter">condition</replaceable> (this is not considered
|
|
|
|
an error).
|
|
|
|
</para>
|
2006-08-12 04:52:06 +02:00
|
|
|
|
|
|
|
<para>
|
|
|
|
If the <command>UPDATE</> command contains a <literal>RETURNING</>
|
|
|
|
clause, the result will be similar to that of a <command>SELECT</>
|
|
|
|
statement containing the columns and values defined in the
|
|
|
|
<literal>RETURNING</> list, computed over the row(s) updated by the
|
|
|
|
command.
|
|
|
|
</para>
|
2003-04-27 01:56:51 +02:00
|
|
|
</refsect1>
|
|
|
|
|
2005-01-04 04:58:16 +01:00
|
|
|
<refsect1>
|
|
|
|
<title>Notes</title>
|
|
|
|
|
|
|
|
<para>
|
2005-01-09 06:57:45 +01:00
|
|
|
When a <literal>FROM</> clause is present, what essentially happens
|
|
|
|
is that the target table is joined to the tables mentioned in the
|
2009-09-19 12:23:27 +02:00
|
|
|
<replaceable>from_list</replaceable>, and each output row of the join
|
2005-01-09 06:57:45 +01:00
|
|
|
represents an update operation for the target table. When using
|
|
|
|
<literal>FROM</> you should ensure that the join
|
2005-01-04 04:58:16 +01:00
|
|
|
produces at most one output row for each row to be modified. In
|
2005-01-09 06:57:45 +01:00
|
|
|
other words, a target row shouldn't join to more than one row from
|
2005-01-04 04:58:16 +01:00
|
|
|
the other table(s). If it does, then only one of the join rows
|
|
|
|
will be used to update the target row, but which one will be used
|
|
|
|
is not readily predictable.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2005-10-13 01:19:22 +02:00
|
|
|
Because of this indeterminacy, referencing other tables only within
|
2005-01-04 04:58:16 +01:00
|
|
|
sub-selects is safer, though often harder to read and slower than
|
|
|
|
using a join.
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
2003-04-27 01:56:51 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Examples</title>
|
1999-07-14 22:32:59 +02:00
|
|
|
|
|
|
|
<para>
|
2003-04-27 01:56:51 +02:00
|
|
|
Change the word <literal>Drama</> to <literal>Dramatic</> in the
|
2004-03-03 23:22:24 +01:00
|
|
|
column <structfield>kind</> of the table <structname>films</structname>:
|
1999-07-14 22:32:59 +02:00
|
|
|
|
2000-03-26 20:32:30 +02:00
|
|
|
<programlisting>
|
2003-07-03 18:34:26 +02:00
|
|
|
UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';
|
2000-03-26 20:32:30 +02:00
|
|
|
</programlisting>
|
1999-07-14 22:32:59 +02:00
|
|
|
</para>
|
2003-07-03 18:34:26 +02:00
|
|
|
|
|
|
|
<para>
|
|
|
|
Adjust temperature entries and reset precipitation to its default
|
2004-03-03 23:22:24 +01:00
|
|
|
value in one row of the table <structname>weather</structname>:
|
2003-07-03 18:34:26 +02:00
|
|
|
|
|
|
|
<programlisting>
|
|
|
|
UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT
|
|
|
|
WHERE city = 'San Francisco' AND date = '2003-07-03';
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
2006-08-12 04:52:06 +02:00
|
|
|
<para>
|
|
|
|
Perform the same operation and return the updated entries:
|
|
|
|
|
|
|
|
<programlisting>
|
|
|
|
UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT
|
|
|
|
WHERE city = 'San Francisco' AND date = '2003-07-03'
|
|
|
|
RETURNING temp_lo, temp_hi, prcp;
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
2006-09-04 00:37:06 +02:00
|
|
|
<para>
|
|
|
|
Use the alternative column-list syntax to do the same update:
|
|
|
|
<programlisting>
|
|
|
|
UPDATE weather SET (temp_lo, temp_hi, prcp) = (temp_lo+1, temp_lo+15, DEFAULT)
|
|
|
|
WHERE city = 'San Francisco' AND date = '2003-07-03';
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
2004-03-03 23:22:24 +01:00
|
|
|
<para>
|
|
|
|
Increment the sales count of the salesperson who manages the
|
|
|
|
account for Acme Corporation, using the <literal>FROM</literal>
|
|
|
|
clause syntax:
|
|
|
|
<programlisting>
|
|
|
|
UPDATE employees SET sales_count = sales_count + 1 FROM accounts
|
|
|
|
WHERE accounts.name = 'Acme Corporation'
|
|
|
|
AND employees.id = accounts.sales_person;
|
|
|
|
</programlisting>
|
2006-01-20 00:09:42 +01:00
|
|
|
</para>
|
2004-03-03 23:22:24 +01:00
|
|
|
|
2006-01-20 00:09:42 +01:00
|
|
|
<para>
|
2004-03-03 23:22:24 +01:00
|
|
|
Perform the same operation, using a sub-select in the
|
|
|
|
<literal>WHERE</literal> clause:
|
|
|
|
<programlisting>
|
|
|
|
UPDATE employees SET sales_count = sales_count + 1 WHERE id =
|
|
|
|
(SELECT sales_person FROM accounts WHERE name = 'Acme Corporation');
|
2004-08-08 03:48:31 +02:00
|
|
|
</programlisting>
|
2006-01-20 00:09:42 +01:00
|
|
|
</para>
|
2004-08-08 03:48:31 +02:00
|
|
|
|
2006-01-20 00:09:42 +01:00
|
|
|
<para>
|
2004-08-08 03:48:31 +02:00
|
|
|
Attempt to insert a new stock item along with the quantity of stock. If
|
2005-01-09 06:57:45 +01:00
|
|
|
the item already exists, instead update the stock count of the existing
|
2007-02-01 01:28:19 +01:00
|
|
|
item. To do this without failing the entire transaction, use savepoints:
|
2004-08-08 03:48:31 +02:00
|
|
|
<programlisting>
|
|
|
|
BEGIN;
|
2005-01-09 06:57:45 +01:00
|
|
|
-- other operations
|
2004-08-08 03:48:31 +02:00
|
|
|
SAVEPOINT sp1;
|
|
|
|
INSERT INTO wines VALUES('Chateau Lafite 2003', '24');
|
2005-01-09 06:57:45 +01:00
|
|
|
-- Assume the above fails because of a unique key violation,
|
|
|
|
-- so now we issue these commands:
|
2004-08-08 03:48:31 +02:00
|
|
|
ROLLBACK TO sp1;
|
2005-01-09 06:57:45 +01:00
|
|
|
UPDATE wines SET stock = stock + 24 WHERE winename = 'Chateau Lafite 2003';
|
|
|
|
-- continue with other operations, and eventually
|
2004-08-08 03:48:31 +02:00
|
|
|
COMMIT;
|
2004-03-03 23:22:24 +01:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
2007-06-11 03:16:30 +02:00
|
|
|
|
|
|
|
<para>
|
|
|
|
Change the <structfield>kind</> column of the table
|
|
|
|
<structname>films</structname> in the row on which the cursor
|
|
|
|
<literal>c_films</> is currently positioned:
|
|
|
|
<programlisting>
|
|
|
|
UPDATE films SET kind = 'Dramatic' WHERE CURRENT OF c_films;
|
2008-11-16 18:34:28 +01:00
|
|
|
</programlisting>
|
2007-06-11 03:16:30 +02:00
|
|
|
</para>
|
1999-07-14 22:32:59 +02:00
|
|
|
</refsect1>
|
|
|
|
|
2003-04-27 01:56:51 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Compatibility</title>
|
|
|
|
|
|
|
|
<para>
|
2005-01-09 06:57:45 +01:00
|
|
|
This command conforms to the <acronym>SQL</acronym> standard, except
|
2006-08-12 04:52:06 +02:00
|
|
|
that the <literal>FROM</literal> and <literal>RETURNING</> clauses
|
|
|
|
are <productname>PostgreSQL</productname> extensions.
|
2003-04-27 01:56:51 +02:00
|
|
|
</para>
|
2005-01-09 06:57:45 +01:00
|
|
|
|
2006-09-04 00:37:06 +02:00
|
|
|
<para>
|
|
|
|
According to the standard, the column-list syntax should allow a list
|
|
|
|
of columns to be assigned from a single row-valued expression, such
|
|
|
|
as a sub-select:
|
|
|
|
<programlisting>
|
|
|
|
UPDATE accounts SET (contact_last_name, contact_first_name) =
|
|
|
|
(SELECT last_name, first_name FROM salesmen
|
|
|
|
WHERE salesmen.id = accounts.sales_id);
|
|
|
|
</programlisting>
|
|
|
|
This is not currently implemented — the source must be a list
|
|
|
|
of independent expressions.
|
|
|
|
</para>
|
|
|
|
|
2005-01-09 06:57:45 +01:00
|
|
|
<para>
|
|
|
|
Some other database systems offer a <literal>FROM</> option in which
|
|
|
|
the target table is supposed to be listed again within <literal>FROM</>.
|
|
|
|
That is not how <productname>PostgreSQL</productname> interprets
|
|
|
|
<literal>FROM</>. Be careful when porting applications that use this
|
|
|
|
extension.
|
|
|
|
</para>
|
1999-07-14 22:32:59 +02:00
|
|
|
</refsect1>
|
|
|
|
</refentry>
|