aboutsummaryrefslogtreecommitdiff
path: root/doc/src/sgml/ref/create_sequence.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/ref/create_sequence.sgml')
-rw-r--r--doc/src/sgml/ref/create_sequence.sgml317
1 files changed, 317 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/create_sequence.sgml b/doc/src/sgml/ref/create_sequence.sgml
new file mode 100644
index 00000000000..bad6ef36aaf
--- /dev/null
+++ b/doc/src/sgml/ref/create_sequence.sgml
@@ -0,0 +1,317 @@
+<REFENTRY ID="SQL-CREATESEQUENCE-1">
+ <REFMETA>
+ <REFENTRYTITLE>
+ CREATE SEQUENCE
+ </REFENTRYTITLE>
+ <REFMISCINFO>SQL - Language Statements</REFMISCINFO>
+ </REFMETA>
+ <REFNAMEDIV>
+ <REFNAME>
+ CREATE SEQUENCE
+ </REFNAME>
+ <REFPURPOSE>
+ creates a new sequence number generator.
+ </REFPURPOSE>
+
+ <REFSYNOPSISDIV>
+ <REFSYNOPSISDIVINFO>
+ <DATE>1998-04-15</DATE>
+ </REFSYNOPSISDIVINFO>
+ <SYNOPSIS>
+ CREATE SEQUENCE <replaceable class="parameter">seqname</replaceable>
+ [INCREMENT <replaceable class="parameter">increment</replaceable>]
+ [MINVALUE <replaceable class="parameter">minvalue</replaceable>]
+ [MAXVALUE <replaceable class="parameter">maxvalue</replaceable>]
+ [START <replaceable class="parameter">start</replaceable>]
+ [CACHE <replaceable class="parameter">cache</replaceable>]
+ [CYCLE]
+ </SYNOPSIS>
+
+ <REFSECT2 ID="R2-SQL-CREATESEQUENCE-1">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Inputs
+ </TITLE>
+ <PARA>
+ </PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue><replaceable class="parameter">seqname</replaceable></ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ The name of a sequence to be created.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue><replaceable class="parameter">increment</replaceable></ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ The <option>INCREMENT <replaceable class="parameter">increment</replaceable></option> clause is optional. A positive value will make an
+ ascending sequence, a negative one a descending sequence. The default value
+ is 1.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue><replaceable class="parameter">minvalue</replaceable></ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ The optional clause <option>MINVALUE
+ <replaceable class="parameter">minvalue</replaceable></option>
+ determines the minimum value
+ a sequence can be. The defaults are 1 and -2147483647 for
+ ascending and descending sequences, respectively.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue><replaceable class="parameter">maxvalue</replaceable></ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ Use the optional clause <option>MAXVALUE
+ <replaceable class="parameter">maxvalue</replaceable></option> to
+ determine the maximum
+ value for the sequence. The defaults are 2147483647 and -1 for
+ ascending and descending sequences, respectively.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue><replaceable class="parameter">start</replaceable></ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ The optional <option>START
+ <replaceable class="parameter">start</replaceable>
+ clause</option> enables the sequence to begin anywhere.
+ The default starting value is
+ <replaceable class="parameter">minvalue</replaceable>
+ for ascending sequences and
+ <replaceable class="parameter">maxvalue</replaceable>
+ for descending ones.
+ <comment>
+ What happens if the user specifies start outside the range?
+ </comment>
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue><replaceable class="parameter">cache</replaceable></ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ The <option>CACHE <replaceable class="parameter">cache</replaceable></option> option
+ enables sequence numbers to be preallocated
+ and stored in memory for faster access. The minimum
+ value is 1 (no cache) and this is also the default.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue>CYCLE</ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ The optional CYCLE keyword may be used to enable the sequence
+ to continue 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 whatever the
+ <replaceable class="parameter">minvalue</replaceable> or
+ <replaceable class="parameter">maxvalue</replaceable> is,
+ as appropriate.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </variablelist>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </variablelist>
+ </REFSECT2>
+
+ <REFSECT2 ID="R2-SQL-CREATESEQUENCE-2">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Outputs
+ </TITLE>
+ <PARA>
+ </PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue>CREATE</ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ Message returned if the command is successful.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue>ERROR: amcreate: '<replaceable class="parameter"> seqname</replaceable>' relation already exists</ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ If the sequence specified already exists.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </variablelist>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </VARIABLELIST>
+ </REFSECT2>
+ </REFSYNOPSISDIV>
+
+ <REFSECT1 ID="R1-SQL-CREATESEQUENCE-1">
+ <REFSECT1INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT1INFO>
+ <TITLE>
+ Description
+ </TITLE>
+ <PARA>
+ CREATE SEQUENCE will enter a new sequence number generator
+ into the current data base. This involves creating and initialising a
+ new single block
+ table with the name <replaceable class="parameter">seqname</replaceable>.
+ The generator will be "owned" by the user issuing the command.
+ </PARA>
+ <para>
+ After the sequence is created, you may use the function
+ <function>nextval()</function> with the
+ sequence name as the argument to get a new number from the sequence.
+ The function <function>currval('<replaceable class="parameter">sequence_name</replaceable>')</function> may be used
+ to determine the number returned by the last call to
+ <function>nextval()</function> for the
+ specified sequence in the current session.
+ </para>
+
+ <para>
+ Use a query like
+ <programlisting>
+ SELECT * FROM sequence_name;
+ </programlisting>
+ to get the parameters of a sequence.
+ </para>
+ <para>
+ Low-level locking is used to enable multiple simultaneous
+ calls to a generator.
+ </para>
+
+ <REFSECT2 ID="R2-SQL-CREATESEQUENCE-3">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Notes
+ </TITLE>
+ <PARA>
+ Refer to the DROP SEQUENCE statement to remove a sequence.
+ </PARA>
+ <para>
+ Each backend uses its own cache to store allocated numbers.
+ Numbers that are cached but not used in the current session will be
+ lost.
+ </para>
+ </REFSECT2>
+ </refsect1>
+
+ <REFSECT1 ID="R1-SQL-CREATESEQUENCE-2">
+ <TITLE>
+ Usage
+ </TITLE>
+ <PARA>
+ Create an ascending sequence called serial, starting at 101:
+ </PARA>
+ <ProgramListing>
+ CREATE SEQUENCE serial START 101;
+ </ProgramListing>
+ <para>
+ Select the next number from this sequence
+ <programlisting>
+ SELECT NEXTVAL ('serial');
+
+ nextval
+ -------
+ 114
+ </programlisting>
+ </para>
+ <para>
+ Use this sequence in an INSERT:
+ <programlisting>
+ INSERT INTO distributors VALUES (NEXTVAL ('serial'),'nothing');
+ </programlisting>
+ </para>
+ </REFSECT1>
+
+ <REFSECT1 ID="R1-SQL-CREATESEQUENCE-3">
+ <TITLE>
+ Compatibility
+ </TITLE>
+ <PARA>
+ CREATE SEQUENCE statement is a PostgreSQL language extension.
+ </PARA>
+
+ <REFSECT2 ID="R2-SQL-CREATESEQUENCE-4">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ SQL92
+ </TITLE>
+ <PARA>
+ There is no CREATE SEQUENCE statement on SQL92.
+ </PARA>
+ </refsect2>
+ </refsect1>
+</REFENTRY>
+
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+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:
+-->