CREATE SEQUENCE
SQL - Language Statements
CREATE SEQUENCE
Creates a new sequence number generator
1998-04-15
CREATE SEQUENCE seqname
[INCREMENT increment]
[MINVALUE minvalue]
[MAXVALUE maxvalue]
[START start]
[CACHE cache]
[CYCLE]
1998-04-15
Inputs
seqname
The name of a sequence to be created.
increment
The clause is optional. A positive value will make an
ascending sequence, a negative one a descending sequence. The default value
is 1.
minvalue
The optional clause
determines the minimum value
a sequence can be. The defaults are 1 and -2147483647 for
ascending and descending sequences, respectively.
maxvalue
Use the optional clause to
determine the maximum
value for the sequence. The defaults are 2147483647 and -1 for
ascending and descending sequences, respectively.
start
The optional enables the sequence to begin anywhere.
The default starting value is
minvalue
for ascending sequences and
maxvalue
for descending ones.
What happens if the user specifies start outside the range?
cache
The 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.
CYCLE
The optional CYCLE keyword may be used to enable the sequence
to continue when the
maxvalue or
minvalue has been
reached by
an ascending or descending sequence respectively. If the limit is
reached, the next number generated will be whatever the
minvalue or
maxvalue is,
as appropriate.
1998-04-15
Outputs
CREATE
Message returned if the command is successful.
ERROR: amcreate: ' seqname' relation already exists
If the sequence specified already exists.
1998-04-15
Description
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 seqname.
The generator will be "owned" by the user issuing the command.
After the sequence is created, you may use the function
nextval() with the
sequence name as the argument to get a new number from the sequence.
The function currval('sequence_name') may be used
to determine the number returned by the last call to
nextval() for the
specified sequence in the current session.
Use a query like
SELECT * FROM sequence_name;
to get the parameters of a sequence.
Low-level locking is used to enable multiple simultaneous
calls to a generator.
1998-04-15
Notes
Refer to the DROP SEQUENCE statement to remove a sequence.
Each backend uses its own cache to store allocated numbers.
Numbers that are cached but not used in the current session will be
lost.
Usage
Create an ascending sequence called serial, starting at 101:
CREATE SEQUENCE serial START 101;
Select the next number from this sequence
SELECT NEXTVAL ('serial');
nextval
-------
114
Use this sequence in an INSERT:
INSERT INTO distributors VALUES (NEXTVAL ('serial'),'nothing');
Compatibility
CREATE SEQUENCE statement is a PostgreSQL language extension.
1998-04-15
SQL92
There is no CREATE SEQUENCE statement on SQL92.