1999-07-22 17:09:15 +02:00
|
|
|
<!--
|
2002-05-18 17:44:48 +02:00
|
|
|
$Header: /cvsroot/pgsql/doc/src/sgml/ref/alter_table.sgml,v 1.45 2002/05/18 15:44:47 petere Exp $
|
2001-12-08 04:24:40 +01:00
|
|
|
PostgreSQL documentation
|
1999-07-22 17:09:15 +02:00
|
|
|
-->
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refentry id="SQL-ALTERTABLE">
|
|
|
|
<refmeta>
|
2002-04-21 21:02:39 +02:00
|
|
|
<refentrytitle id="sql-altertable-title">ALTER TABLE</refentrytitle>
|
1999-07-06 19:16:42 +02:00
|
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
|
|
<refname>
|
|
|
|
ALTER TABLE
|
|
|
|
</refname>
|
|
|
|
<refpurpose>
|
2001-09-03 14:57:50 +02:00
|
|
|
change the definition of a table
|
1999-07-06 19:16:42 +02:00
|
|
|
</refpurpose>
|
|
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
|
|
<refsynopsisdivinfo>
|
1999-07-22 17:09:15 +02:00
|
|
|
<date>1999-07-20</date>
|
1999-07-06 19:16:42 +02:00
|
|
|
</refsynopsisdivinfo>
|
|
|
|
<synopsis>
|
2001-01-05 07:34:23 +01:00
|
|
|
ALTER TABLE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> [ * ]
|
2001-10-12 02:07:15 +02:00
|
|
|
ADD [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> <replaceable class="PARAMETER">type</replaceable> [ <replaceable class="PARAMETER">column_constraint</replaceable> [ ... ] ]
|
2001-01-05 07:34:23 +01:00
|
|
|
ALTER TABLE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> [ * ]
|
2002-04-23 04:07:16 +02:00
|
|
|
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> { SET DEFAULT <replaceable class="PARAMETER">value</replaceable> | DROP DEFAULT }
|
2002-04-01 06:35:40 +02:00
|
|
|
ALTER TABLE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> [ * ]
|
|
|
|
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> { SET | DROP } NOT NULL
|
2001-05-07 02:43:27 +02:00
|
|
|
ALTER TABLE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> [ * ]
|
|
|
|
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> SET STATISTICS <replaceable class="PARAMETER">integer</replaceable>
|
2002-03-05 06:33:31 +01:00
|
|
|
ALTER TABLE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> [ * ]
|
2002-04-23 04:07:16 +02:00
|
|
|
ALTER [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
|
2001-05-07 02:43:27 +02:00
|
|
|
ALTER TABLE [ ONLY ] <replaceable class="PARAMETER">table</replaceable> [ * ]
|
2000-01-29 17:58:54 +01:00
|
|
|
RENAME [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> TO <replaceable
|
2002-04-23 04:07:16 +02:00
|
|
|
class="PARAMETER">new_column</replaceable>
|
1999-07-06 19:16:42 +02:00
|
|
|
ALTER TABLE <replaceable class="PARAMETER">table</replaceable>
|
2002-02-17 00:45:48 +01:00
|
|
|
RENAME TO <replaceable class="PARAMETER">new_table</replaceable>
|
2000-04-11 16:43:54 +02:00
|
|
|
ALTER TABLE <replaceable class="PARAMETER">table</replaceable>
|
2002-02-17 00:45:48 +01:00
|
|
|
ADD <replaceable class="PARAMETER">table_constraint_definition</replaceable>
|
2001-05-30 15:01:08 +02:00
|
|
|
ALTER TABLE [ ONLY ] <replaceable class="PARAMETER">table</replaceable>
|
2002-04-23 04:07:16 +02:00
|
|
|
DROP CONSTRAINT <replaceable class="PARAMETER">constraint_name</replaceable> { RESTRICT | CASCADE }
|
2000-12-20 04:19:24 +01:00
|
|
|
ALTER TABLE <replaceable class="PARAMETER">table</replaceable>
|
2002-02-17 00:45:48 +01:00
|
|
|
OWNER TO <replaceable class="PARAMETER">new_owner</replaceable>
|
1999-07-06 19:16:42 +02:00
|
|
|
</synopsis>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect2 id="R2-SQL-ALTERTABLE-1">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-04-15</date>
|
|
|
|
</refsect2info>
|
|
|
|
<title>
|
|
|
|
Inputs
|
|
|
|
</title>
|
|
|
|
<para>
|
|
|
|
<variablelist>
|
2002-04-24 04:40:45 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER"> table </replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2002-04-23 04:07:16 +02:00
|
|
|
The name (possibly schema-qualified) of an existing table to alter.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER"> column </replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Name of a new or existing column.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER"> type </replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Type of the new column.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
2002-04-23 04:07:16 +02:00
|
|
|
<term><replaceable class="PARAMETER"> new_column </replaceable></term>
|
1999-07-06 19:16:42 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New name for an existing column.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
2002-02-17 00:45:48 +01:00
|
|
|
<term><replaceable class="PARAMETER"> new_table </replaceable></term>
|
1999-07-06 19:16:42 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2000-01-29 17:58:54 +01:00
|
|
|
New name for the table.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2000-04-11 16:43:54 +02:00
|
|
|
|
|
|
|
<varlistentry>
|
2002-02-17 00:45:48 +01:00
|
|
|
<term><replaceable class="PARAMETER"> table_constraint_definition </replaceable></term>
|
2000-04-11 16:43:54 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2002-04-23 04:07:16 +02:00
|
|
|
New table constraint for the table.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER"> constraint_name </replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Name of an existing constraint to drop.
|
2000-04-11 16:43:54 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2000-12-20 04:19:24 +01:00
|
|
|
|
|
|
|
<varlistentry>
|
2002-02-17 00:45:48 +01:00
|
|
|
<term><replaceable class="PARAMETER">new_owner </replaceable></term>
|
2000-12-20 04:19:24 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2001-03-05 19:42:57 +01:00
|
|
|
The user name of the new owner of the table.
|
2000-12-20 04:19:24 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
</refsect2>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect2 id="R2-SQL-ALTERTABLE-2">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-04-15</date>
|
|
|
|
</refsect2info>
|
|
|
|
<title>
|
|
|
|
Outputs
|
|
|
|
</title>
|
|
|
|
<para>
|
1998-10-30 20:34:40 +01:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
2002-05-18 17:44:48 +02:00
|
|
|
<term><computeroutput>ALTER TABLE</computeroutput></term>
|
1999-07-06 19:16:42 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Message returned from column or table renaming.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
2000-01-29 17:58:54 +01:00
|
|
|
<term><computeroutput>ERROR</computeroutput></term>
|
1999-07-06 19:16:42 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Message returned if table or column is not available.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
</refsect2>
|
|
|
|
</refsynopsisdiv>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect1 id="R1-SQL-ALTERTABLE-1">
|
|
|
|
<refsect1info>
|
|
|
|
<date>1998-04-15</date>
|
|
|
|
</refsect1info>
|
|
|
|
<title>
|
|
|
|
Description
|
|
|
|
</title>
|
|
|
|
<para>
|
1998-09-16 16:43:12 +02:00
|
|
|
<command>ALTER TABLE</command> changes the definition of an existing table.
|
2002-04-23 04:07:16 +02:00
|
|
|
There are several sub-forms:
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
|
2002-04-23 04:07:16 +02:00
|
|
|
<variablelist>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>ADD COLUMN</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This form adds a new column to the table using the same syntax as
|
|
|
|
<xref linkend="SQL-CREATETABLE" endterm="SQL-CREATETABLE-TITLE">.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>SET/DROP DEFAULT</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
These forms set or remove the default value for a column. Note
|
|
|
|
that defaults only apply to subsequent <command>INSERT</command>
|
|
|
|
commands; they do not cause rows already in the table to change.
|
|
|
|
Defaults may also be created for views, in which case they are
|
|
|
|
inserted into <command>INSERT</> statements on the view before
|
|
|
|
the view's ON INSERT rule is applied.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>SET/DROP NOT NULL</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
These forms change whether a column is marked to allow NULL
|
|
|
|
values or to reject NULL values. You may only <literal>SET NOT NULL</>
|
|
|
|
when the table contains no NULLs in the column.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>SET STATISTICS</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This form
|
|
|
|
sets the per-column statistics-gathering target for subsequent
|
|
|
|
<xref linkend="sql-analyze" endterm="sql-analyze-title"> operations.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>SET STORAGE</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This form sets the storage mode for a column. This controls whether this
|
|
|
|
column is held inline or in a supplementary table, and whether the data
|
|
|
|
should be compressed or not. <literal>PLAIN</literal> must be used
|
|
|
|
for fixed-length values such as <literal>INTEGER</literal> and is
|
|
|
|
inline, uncompressed. <literal>MAIN</literal> is for inline,
|
|
|
|
compressible data. <literal>EXTERNAL</literal> is for external,
|
|
|
|
uncompressed data and <literal>EXTENDED</literal> is for external,
|
|
|
|
compressed data. <literal>EXTENDED</literal> is the default for all
|
|
|
|
datatypes that support it. The use of <literal>EXTERNAL</literal> will
|
|
|
|
make substring operations on a TEXT column faster, at the penalty of
|
|
|
|
increased storage space.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>RENAME</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The <literal>RENAME</literal> forms change the name of a table
|
|
|
|
(or an index, sequence, or view) or the name of an individual column in
|
|
|
|
a table. There is no effect on the stored data.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>ADD <replaceable class="PARAMETER">table_constraint_definition</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This form adds a new constraint to a table using the same syntax as
|
|
|
|
<xref linkend="SQL-CREATETABLE" endterm="SQL-CREATETABLE-TITLE">.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>DROP CONSTRAINT</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This form drops constraints on a table (and its children).
|
|
|
|
Currently, constraints on tables are not required to have unique
|
|
|
|
names, so there may be more than one constraint matching the specified
|
|
|
|
name. All such constraints will be dropped.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>OWNER</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This form changes the owner of the table, index, sequence or view to the
|
|
|
|
specified user.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
</variablelist>
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<para>
|
2002-04-23 04:07:16 +02:00
|
|
|
You must own the table to use <command>ALTER TABLE</>; except for
|
|
|
|
<command>ALTER TABLE OWNER</>, which may only be executed by a superuser.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<refsect2 id="R2-SQL-ALTERTABLE-3">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-04-15</date>
|
|
|
|
</refsect2info>
|
|
|
|
<title>
|
|
|
|
Notes
|
|
|
|
</title>
|
|
|
|
<para>
|
|
|
|
The keyword <literal>COLUMN</literal> is noise and can be omitted.
|
|
|
|
</para>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-22 17:09:15 +02:00
|
|
|
<para>
|
2001-05-07 02:43:27 +02:00
|
|
|
In the current implementation of <literal>ADD COLUMN</literal>,
|
2001-10-12 02:07:15 +02:00
|
|
|
default and NOT NULL clauses for the new column are not supported.
|
2002-04-23 04:07:16 +02:00
|
|
|
The new column always comes into being with all values NULL.
|
2001-10-12 02:07:15 +02:00
|
|
|
You can use the <literal>SET DEFAULT</literal> form
|
2002-04-23 04:07:16 +02:00
|
|
|
of <command>ALTER TABLE</command> to set the default afterwards.
|
2001-05-07 02:43:27 +02:00
|
|
|
(You may also want to update the already existing rows to the
|
2002-04-23 04:07:16 +02:00
|
|
|
new default value, using
|
|
|
|
<xref linkend="sql-update" endterm="sql-update-title">.)
|
|
|
|
If you want to mark the column non-null, use the <literal>SET NOT NULL</>
|
|
|
|
form after you've entered non-null values for the column in all rows.
|
1999-07-22 17:09:15 +02:00
|
|
|
</para>
|
|
|
|
|
2001-11-10 21:13:37 +01:00
|
|
|
<para>
|
|
|
|
In DROP CONSTRAINT, the RESTRICT keyword is required, although
|
|
|
|
dependencies are not yet checked. The CASCADE option is unsupported.
|
2002-04-23 04:07:16 +02:00
|
|
|
Currently DROP CONSTRAINT only handles CHECK constraints.
|
2001-11-10 21:13:37 +01:00
|
|
|
To remove a PRIMARY or UNIQUE constraint, drop the
|
2001-11-18 21:35:02 +01:00
|
|
|
relevant index using the <xref linkend="SQL-DROPINDEX" endterm="sql-dropindex-title"> command.
|
2001-05-30 15:01:08 +02:00
|
|
|
To remove FOREIGN KEY constraints you need to recreate
|
|
|
|
and reload the table, using other parameters to the
|
2001-11-18 21:35:02 +01:00
|
|
|
<xref linkend="SQL-CREATETABLE" endterm="sql-createtable-title"> command.
|
2001-05-30 15:01:08 +02:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
For example, to drop all constraints on a table <literal>distributors</literal>:
|
|
|
|
<programlisting>
|
|
|
|
CREATE TABLE temp AS SELECT * FROM distributors;
|
|
|
|
DROP TABLE distributors;
|
|
|
|
CREATE TABLE distributors AS SELECT * FROM temp;
|
|
|
|
DROP TABLE temp;
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
1999-07-22 17:09:15 +02:00
|
|
|
<para>
|
2001-05-07 02:43:27 +02:00
|
|
|
Changing any part of the schema of a system
|
1999-07-22 17:09:15 +02:00
|
|
|
catalog is not permitted.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<para>
|
|
|
|
Refer to <command>CREATE TABLE</command> for a further description
|
|
|
|
of valid arguments.
|
2002-04-23 04:07:16 +02:00
|
|
|
The <citetitle>PostgreSQL User's Guide</citetitle> has further
|
|
|
|
information on inheritance.
|
1999-07-06 19:16:42 +02:00
|
|
|
</para>
|
|
|
|
</refsect2>
|
|
|
|
</refsect1>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect1 id="R1-SQL-ALTERTABLE-2">
|
|
|
|
<title>
|
|
|
|
Usage
|
|
|
|
</title>
|
|
|
|
<para>
|
2002-01-20 23:19:57 +01:00
|
|
|
To add a column of type <type>varchar</type> to a table:
|
1999-07-06 19:16:42 +02:00
|
|
|
<programlisting>
|
|
|
|
ALTER TABLE distributors ADD COLUMN address VARCHAR(30);
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<para>
|
1998-05-13 07:34:00 +02:00
|
|
|
To rename an existing column:
|
1999-07-06 19:16:42 +02:00
|
|
|
<programlisting>
|
|
|
|
ALTER TABLE distributors RENAME COLUMN address TO city;
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<para>
|
1998-05-13 07:34:00 +02:00
|
|
|
To rename an existing table:
|
1999-07-06 19:16:42 +02:00
|
|
|
<programlisting>
|
|
|
|
ALTER TABLE distributors RENAME TO suppliers;
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
2002-04-01 06:35:40 +02:00
|
|
|
|
|
|
|
<para>
|
|
|
|
To add a NOT NULL constraint to a column:
|
|
|
|
<programlisting>
|
|
|
|
ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
|
|
|
|
</programlisting>
|
|
|
|
To remove a NOT NULL constraint from a column:
|
|
|
|
<programlisting>
|
|
|
|
ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
2000-04-11 16:43:54 +02:00
|
|
|
|
2001-05-09 15:27:15 +02:00
|
|
|
<para>
|
|
|
|
To add a check constraint to a table:
|
|
|
|
<programlisting>
|
2001-09-12 04:13:25 +02:00
|
|
|
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
|
2001-05-09 15:27:15 +02:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
2001-05-30 15:01:08 +02:00
|
|
|
<para>
|
|
|
|
To remove a check constraint from a table and all its children:
|
|
|
|
<programlisting>
|
2001-11-10 21:13:37 +01:00
|
|
|
ALTER TABLE distributors DROP CONSTRAINT zipchk RESTRICT;
|
2001-05-30 15:01:08 +02:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
|
2000-04-11 16:43:54 +02:00
|
|
|
<para>
|
|
|
|
To add a foreign key constraint to a table:
|
|
|
|
<programlisting>
|
2001-09-12 04:13:25 +02:00
|
|
|
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL;
|
2000-04-11 16:43:54 +02:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
2001-09-07 23:57:53 +02:00
|
|
|
|
|
|
|
<para>
|
2002-01-20 23:19:57 +01:00
|
|
|
To add a (multicolumn) unique constraint to a table:
|
2001-09-07 23:57:53 +02:00
|
|
|
<programlisting>
|
2001-09-12 04:13:25 +02:00
|
|
|
ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
|
2001-09-07 23:57:53 +02:00
|
|
|
</programlisting>
|
2002-02-17 12:50:09 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
To add an automatically named primary key constraint to a table, noting
|
|
|
|
that a table can only ever have one primary key:
|
|
|
|
<programlisting>
|
|
|
|
ALTER TABLE distributors ADD PRIMARY KEY (dist_id);
|
|
|
|
</programlisting>
|
2001-09-07 23:57:53 +02:00
|
|
|
</para>
|
1999-07-06 19:16:42 +02:00
|
|
|
</refsect1>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect1 id="R1-SQL-ALTERTABLE-3">
|
|
|
|
<title>
|
|
|
|
Compatibility
|
|
|
|
</title>
|
1998-05-13 07:34:00 +02:00
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
<refsect2 id="R2-SQL-ALTERTABLE-4">
|
|
|
|
<refsect2info>
|
|
|
|
<date>1998-04-15</date>
|
|
|
|
</refsect2info>
|
2000-01-29 17:58:54 +01:00
|
|
|
<title>SQL92</title>
|
|
|
|
<para>
|
|
|
|
The <literal>ADD COLUMN</literal> form is compliant with the exception that
|
2001-10-12 02:07:15 +02:00
|
|
|
it does not support defaults and NOT NULL constraints, as explained above.
|
2000-01-29 17:58:54 +01:00
|
|
|
The <literal>ALTER COLUMN</literal> form is in full compliance.
|
|
|
|
</para>
|
1998-09-16 16:43:12 +02:00
|
|
|
|
2000-01-29 17:58:54 +01:00
|
|
|
<para>
|
|
|
|
SQL92 specifies some additional capabilities for <command>ALTER TABLE</command>
|
2001-12-08 04:24:40 +01:00
|
|
|
statement which are not yet directly supported by <productname>PostgreSQL</productname>:
|
1998-05-13 07:34:00 +02:00
|
|
|
|
2000-01-29 17:58:54 +01:00
|
|
|
<variablelist>
|
1999-07-06 19:16:42 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
<synopsis>
|
2000-01-29 17:58:54 +01:00
|
|
|
ALTER TABLE <replaceable class="PARAMETER">table</replaceable> DROP [ COLUMN ] <replaceable class="PARAMETER">column</replaceable> { RESTRICT | CASCADE }
|
1999-07-06 19:16:42 +02:00
|
|
|
</synopsis>
|
|
|
|
</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Removes a column from a table.
|
|
|
|
Currently, to remove an existing column the table must be
|
|
|
|
recreated and reloaded:
|
|
|
|
<programlisting>
|
1998-05-13 07:34:00 +02:00
|
|
|
CREATE TABLE temp AS SELECT did, city FROM distributors;
|
|
|
|
DROP TABLE distributors;
|
|
|
|
CREATE TABLE distributors (
|
|
|
|
did DECIMAL(3) DEFAULT 1,
|
2000-07-22 04:39:10 +02:00
|
|
|
name VARCHAR(40) NOT NULL
|
1998-05-13 07:34:00 +02:00
|
|
|
);
|
|
|
|
INSERT INTO distributors SELECT * FROM temp;
|
|
|
|
DROP TABLE temp;
|
1999-07-06 19:16:42 +02:00
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
2000-01-29 17:58:54 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2001-11-22 04:42:32 +01:00
|
|
|
The clauses to rename tables, columns, indexes, and sequences are
|
2001-12-08 04:24:40 +01:00
|
|
|
<productname>PostgreSQL</productname> extensions from SQL92.
|
2000-01-29 17:58:54 +01:00
|
|
|
</para>
|
|
|
|
|
1999-07-06 19:16:42 +02:00
|
|
|
</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:
|
|
|
|
-->
|