2003-03-20 08:02:11 +01:00
|
|
|
<!--
|
2010-07-29 21:34:41 +02:00
|
|
|
$PostgreSQL: pgsql/doc/src/sgml/ref/alter_sequence.sgml,v 1.26 2010/07/29 19:34:40 petere Exp $
|
2003-03-20 08:02:11 +01:00
|
|
|
PostgreSQL documentation
|
|
|
|
-->
|
|
|
|
|
|
|
|
<refentry id="SQL-ALTERSEQUENCE">
|
|
|
|
<refmeta>
|
2010-04-03 09:23:02 +02:00
|
|
|
<refentrytitle>ALTER SEQUENCE</refentrytitle>
|
2008-11-14 11:22:48 +01:00
|
|
|
<manvolnum>7</manvolnum>
|
2003-03-20 08:02:11 +01:00
|
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
|
|
</refmeta>
|
2003-08-31 19:32:24 +02:00
|
|
|
|
2003-03-20 08:02:11 +01:00
|
|
|
<refnamediv>
|
2008-11-12 16:53:34 +01:00
|
|
|
<refname>ALTER SEQUENCE</refname>
|
2003-03-20 08:02:11 +01:00
|
|
|
<refpurpose>
|
2004-08-24 02:06:51 +02:00
|
|
|
change the definition of a sequence generator
|
2003-03-20 08:02:11 +01:00
|
|
|
</refpurpose>
|
|
|
|
</refnamediv>
|
2003-08-31 19:32:24 +02:00
|
|
|
|
|
|
|
<indexterm zone="sql-altersequence">
|
|
|
|
<primary>ALTER SEQUENCE</primary>
|
|
|
|
</indexterm>
|
|
|
|
|
2003-03-20 08:02:11 +01:00
|
|
|
<refsynopsisdiv>
|
2010-07-29 21:34:41 +02:00
|
|
|
<synopsis>
|
2003-09-22 02:16:58 +02:00
|
|
|
ALTER SEQUENCE <replaceable class="parameter">name</replaceable> [ INCREMENT [ BY ] <replaceable class="parameter">increment</replaceable> ]
|
2003-03-20 08:02:11 +01:00
|
|
|
[ MINVALUE <replaceable class="parameter">minvalue</replaceable> | NO MINVALUE ] [ MAXVALUE <replaceable class="parameter">maxvalue</replaceable> | NO MAXVALUE ]
|
2008-05-17 03:20:39 +02:00
|
|
|
[ START [ WITH ] <replaceable class="parameter">start</replaceable> ]
|
|
|
|
[ RESTART [ [ WITH ] <replaceable class="parameter">restart</replaceable> ] ]
|
|
|
|
[ CACHE <replaceable class="parameter">cache</replaceable> ] [ [ NO ] CYCLE ]
|
2006-08-21 02:57:26 +02:00
|
|
|
[ OWNED BY { <replaceable class="parameter">table</replaceable>.<replaceable class="parameter">column</replaceable> | NONE } ]
|
2008-06-15 03:25:54 +02:00
|
|
|
ALTER SEQUENCE <replaceable class="parameter">name</replaceable> OWNER TO <replaceable class="PARAMETER">new_owner</replaceable>
|
2007-07-03 03:30:37 +02:00
|
|
|
ALTER SEQUENCE <replaceable class="parameter">name</replaceable> RENAME TO <replaceable class="parameter">new_name</replaceable>
|
2007-10-03 18:48:43 +02:00
|
|
|
ALTER SEQUENCE <replaceable class="parameter">name</replaceable> SET SCHEMA <replaceable class="parameter">new_schema</replaceable>
|
2010-07-29 21:34:41 +02:00
|
|
|
</synopsis>
|
2003-09-09 20:28:53 +02:00
|
|
|
</refsynopsisdiv>
|
2003-03-20 08:02:11 +01:00
|
|
|
|
2003-09-09 20:28:53 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Description</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<command>ALTER SEQUENCE</command> changes the parameters of an existing
|
2005-08-01 18:11:14 +02:00
|
|
|
sequence generator. Any parameters not specifically set in the
|
|
|
|
<command>ALTER SEQUENCE</command> command retain their prior settings.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
You must own the sequence to use <command>ALTER SEQUENCE</>.
|
|
|
|
To change a sequence's schema, you must also have <literal>CREATE</>
|
|
|
|
privilege on the new schema.
|
2008-06-15 03:25:54 +02:00
|
|
|
To alter the owner, you must also be a direct or indirect member of the new
|
|
|
|
owning role, and that role must have <literal>CREATE</literal> privilege on
|
|
|
|
the sequence's schema. (These restrictions enforce that altering the owner
|
|
|
|
doesn't do anything you couldn't do by dropping and recreating the sequence.
|
|
|
|
However, a superuser can alter ownership of any sequence anyway.)
|
2003-09-09 20:28:53 +02:00
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<title>Parameters</title>
|
|
|
|
|
|
|
|
<para>
|
2003-03-20 08:02:11 +01:00
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
2003-09-22 02:16:58 +02:00
|
|
|
<term><replaceable class="parameter">name</replaceable></term>
|
2003-03-20 08:02:11 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2003-11-01 02:56:29 +01:00
|
|
|
The name (optionally schema-qualified) of a sequence to be altered.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">increment</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2003-11-01 02:56:29 +01:00
|
|
|
The clause <literal>INCREMENT BY <replaceable
|
|
|
|
class="parameter">increment</replaceable></literal> is
|
|
|
|
optional. A positive value will make an ascending sequence, a
|
|
|
|
negative one a descending sequence. If unspecified, the old
|
|
|
|
increment value will be maintained.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">minvalue</replaceable></term>
|
2003-11-01 02:56:29 +01:00
|
|
|
<term><literal>NO MINVALUE</literal></term>
|
2003-03-20 08:02:11 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2003-11-01 02:56:29 +01:00
|
|
|
The optional clause <literal>MINVALUE <replaceable
|
|
|
|
class="parameter">minvalue</replaceable></literal> determines
|
|
|
|
the minimum value a sequence can generate. If <literal>NO
|
|
|
|
MINVALUE</literal> is specified, the defaults of 1 and
|
|
|
|
-2<superscript>63</>-1 for ascending and descending sequences,
|
|
|
|
respectively, will be used. If neither option is specified,
|
|
|
|
the current minimum value will be maintained.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">maxvalue</replaceable></term>
|
2003-11-01 02:56:29 +01:00
|
|
|
<term><literal>NO MAXVALUE</literal></term>
|
2003-03-20 08:02:11 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2003-11-01 02:56:29 +01:00
|
|
|
The optional clause <literal>MAXVALUE <replaceable
|
|
|
|
class="parameter">maxvalue</replaceable></literal> determines
|
|
|
|
the maximum value for the sequence. If <literal>NO
|
|
|
|
MAXVALUE</literal> is specified, the defaults are
|
|
|
|
2<superscript>63</>-1 and -1 for ascending and descending
|
|
|
|
sequences, respectively, will be used. If neither option is
|
|
|
|
specified, the current maximum value will be maintained.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">start</replaceable></term>
|
2008-05-17 03:20:39 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The optional clause <literal>START WITH <replaceable
|
|
|
|
class="parameter">start</replaceable></literal> changes the
|
|
|
|
recorded start value of the sequence. This has no effect on the
|
|
|
|
<emphasis>current</> sequence value; it simply sets the value
|
|
|
|
that future <command>ALTER SEQUENCE RESTART</> commands will use.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">restart</replaceable></term>
|
2003-03-20 08:02:11 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2008-05-17 01:36:05 +02:00
|
|
|
The optional clause <literal>RESTART [ WITH <replaceable
|
2008-05-17 03:20:39 +02:00
|
|
|
class="parameter">restart</replaceable> ]</literal> changes the
|
2007-10-25 20:54:03 +02:00
|
|
|
current value of the sequence. This is equivalent to calling the
|
|
|
|
<function>setval</> function with <literal>is_called</literal> =
|
|
|
|
<literal>false</>: the specified value will be returned by the
|
|
|
|
<emphasis>next</> call of <function>nextval</>.
|
2008-05-17 01:36:05 +02:00
|
|
|
Writing <literal>RESTART</> with no <replaceable
|
2008-05-17 03:20:39 +02:00
|
|
|
class="parameter">restart</> value is equivalent to supplying
|
|
|
|
the start value that was recorded by <command>CREATE SEQUENCE</>
|
|
|
|
or last set by <command>ALTER SEQUENCE START WITH</>.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="parameter">cache</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2003-11-01 02:56:29 +01:00
|
|
|
The clause <literal>CACHE <replaceable
|
|
|
|
class="parameter">cache</replaceable></literal> enables
|
|
|
|
sequence numbers to be preallocated and stored in memory for
|
|
|
|
faster access. The minimum value is 1 (only one value can be
|
|
|
|
generated at a time, i.e., no cache). If unspecified, the old
|
|
|
|
cache value will be maintained.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2005-09-13 17:24:57 +02:00
|
|
|
<term><literal>CYCLE</literal></term>
|
2003-03-20 08:02:11 +01:00
|
|
|
<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
|
|
|
The optional <literal>CYCLE</literal> key word can be used to enable
|
2003-11-01 02:56:29 +01:00
|
|
|
the sequence to wrap around when the
|
|
|
|
<replaceable class="parameter">maxvalue</replaceable> or
|
|
|
|
<replaceable class="parameter">minvalue</replaceable> has been
|
|
|
|
reached by
|
|
|
|
an ascending or descending sequence respectively. If the limit is
|
|
|
|
reached, the next number generated will be the
|
|
|
|
<replaceable class="parameter">minvalue</replaceable> or
|
|
|
|
<replaceable class="parameter">maxvalue</replaceable>,
|
|
|
|
respectively.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2003-11-01 02:56:29 +01:00
|
|
|
<varlistentry>
|
2005-09-13 17:24:57 +02:00
|
|
|
<term><literal>NO CYCLE</literal></term>
|
2003-11-01 02:56:29 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
If the optional <literal>NO CYCLE</literal> key word is
|
|
|
|
specified, any calls to <function>nextval</function> after the
|
|
|
|
sequence has reached its maximum value will return an error.
|
|
|
|
If neither <literal>CYCLE</literal> or <literal>NO
|
2005-10-15 22:12:33 +02:00
|
|
|
CYCLE</literal> are specified, the old cycle behavior will be
|
2003-11-01 02:56:29 +01:00
|
|
|
maintained.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
2005-08-01 18:11:14 +02:00
|
|
|
|
2006-08-21 02:57:26 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><literal>OWNED BY</literal> <replaceable class="parameter">table</replaceable>.<replaceable class="parameter">column</replaceable></term>
|
|
|
|
<term><literal>OWNED BY NONE</literal></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The <literal>OWNED BY</literal> option causes the sequence to be
|
|
|
|
associated with a specific table column, such that if that column
|
|
|
|
(or its whole table) is dropped, the sequence will be automatically
|
|
|
|
dropped as well. If specified, this association replaces any
|
|
|
|
previously specified association for the sequence. The specified
|
|
|
|
table must have the same owner and be in the same schema as the
|
|
|
|
sequence.
|
|
|
|
Specifying <literal>OWNED BY NONE</literal> removes any existing
|
|
|
|
association, making the sequence <quote>free-standing</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2008-06-15 03:25:54 +02:00
|
|
|
<varlistentry>
|
|
|
|
<term><replaceable class="PARAMETER">new_owner</replaceable></term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The user name of the new owner of the sequence.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2007-07-03 03:30:37 +02:00
|
|
|
<varlistentry>
|
2007-10-03 18:48:43 +02:00
|
|
|
<term><replaceable class="parameter">new_name</replaceable></term>
|
2007-07-03 03:30:37 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2007-10-03 18:48:43 +02:00
|
|
|
The new name for the sequence.
|
2007-07-03 03:30:37 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
2007-10-03 18:48:43 +02:00
|
|
|
<term><replaceable class="parameter">new_schema</replaceable></term>
|
2007-07-03 03:30:37 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2007-10-03 18:48:43 +02:00
|
|
|
The new schema for the sequence.
|
2007-07-03 03:30:37 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
2003-03-20 08:02:11 +01:00
|
|
|
</variablelist>
|
|
|
|
</para>
|
2003-09-09 20:28:53 +02:00
|
|
|
</refsect1>
|
2003-03-20 08:02:11 +01:00
|
|
|
|
2003-09-09 20:28:53 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Notes</title>
|
|
|
|
|
2003-03-20 08:02:11 +01:00
|
|
|
<para>
|
2003-09-09 20:28:53 +02:00
|
|
|
To avoid blocking of concurrent transactions that obtain numbers from the
|
2006-08-21 02:57:26 +02:00
|
|
|
same sequence, <command>ALTER SEQUENCE</command>'s effects on the sequence
|
2008-06-15 03:25:54 +02:00
|
|
|
generation parameters are never rolled back; those changes take effect
|
|
|
|
immediately and are not reversible. However, the <literal>OWNED BY</>,
|
|
|
|
<literal>OWNER TO</>, <literal>RENAME TO</>, and <literal>SET SCHEMA</>
|
2007-10-03 18:48:43 +02:00
|
|
|
clauses cause ordinary catalog updates that can be rolled back.
|
2003-03-20 08:02:11 +01:00
|
|
|
</para>
|
2003-09-09 20:28:53 +02:00
|
|
|
|
2003-06-12 09:49:43 +02:00
|
|
|
<para>
|
2003-09-09 20:28:53 +02:00
|
|
|
<command>ALTER SEQUENCE</command> will not immediately affect
|
2005-09-13 17:24:57 +02:00
|
|
|
<function>nextval</> results in backends,
|
2003-09-09 20:28:53 +02:00
|
|
|
other than the current one, that have preallocated (cached) sequence
|
|
|
|
values. They will use up all cached values prior to noticing the changed
|
2006-08-21 02:57:26 +02:00
|
|
|
sequence generation parameters. The current backend will be affected
|
|
|
|
immediately.
|
2003-06-12 09:49:43 +02:00
|
|
|
</para>
|
2005-08-01 18:11:14 +02:00
|
|
|
|
2007-10-25 20:54:03 +02:00
|
|
|
<para>
|
|
|
|
<command>ALTER SEQUENCE</command> does not affect the <function>currval</>
|
|
|
|
status for the sequence. (Before <productname>PostgreSQL</productname>
|
|
|
|
8.3, it sometimes did.)
|
|
|
|
</para>
|
|
|
|
|
2005-08-01 18:11:14 +02:00
|
|
|
<para>
|
2008-06-15 03:25:54 +02:00
|
|
|
For historical reasons, <command>ALTER TABLE</command> can be used with
|
|
|
|
sequences too; but the only variants of <command>ALTER TABLE</command>
|
|
|
|
that are allowed with sequences are equivalent to the forms shown above.
|
2005-08-01 18:11:14 +02:00
|
|
|
</para>
|
2003-03-20 08:02:11 +01:00
|
|
|
</refsect1>
|
|
|
|
|
2007-10-03 18:48:43 +02:00
|
|
|
<refsect1>
|
|
|
|
<title>Examples</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Restart a sequence called <literal>serial</literal>, at 105:
|
|
|
|
<programlisting>
|
|
|
|
ALTER SEQUENCE serial RESTART WITH 105;
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
2003-03-20 08:02:11 +01:00
|
|
|
|
2003-09-09 20:28:53 +02:00
|
|
|
<refsect1>
|
2004-11-27 22:27:08 +01:00
|
|
|
<title>Compatibility</title>
|
2003-03-20 08:02:11 +01:00
|
|
|
|
2004-11-27 22:27:08 +01:00
|
|
|
<para>
|
2005-11-01 22:09:51 +01:00
|
|
|
<command>ALTER SEQUENCE</command> conforms to the <acronym>SQL</acronym>
|
2008-05-17 03:20:39 +02:00
|
|
|
standard, except for the <literal>START WITH</>,
|
2008-06-15 03:25:54 +02:00
|
|
|
<literal>OWNED BY</>, <literal>OWNER TO</>, <literal>RENAME TO</>, and
|
2007-10-03 18:48:43 +02:00
|
|
|
<literal>SET SCHEMA</literal> clauses, which are
|
|
|
|
<productname>PostgreSQL</productname> extensions.
|
2004-11-27 22:27:08 +01:00
|
|
|
</para>
|
2003-03-20 08:02:11 +01:00
|
|
|
</refsect1>
|
2006-08-21 02:57:26 +02:00
|
|
|
|
|
|
|
<refsect1>
|
|
|
|
<title>See Also</title>
|
|
|
|
|
|
|
|
<simplelist type="inline">
|
2010-04-03 09:23:02 +02:00
|
|
|
<member><xref linkend="sql-createsequence"></member>
|
|
|
|
<member><xref linkend="sql-dropsequence"></member>
|
2006-08-21 02:57:26 +02:00
|
|
|
</simplelist>
|
|
|
|
</refsect1>
|
|
|
|
|
2003-03-20 08:02:11 +01:00
|
|
|
</refentry>
|