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-09-11
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 one (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.
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-09-11
Outputs
statusCREATE
Message returned if the command is successful.
ERROR: amcreate: 'seqname' relation already exists
If the sequence specified already exists.
ERROR: DefineSequence: START value (start) can't be > MAXVALUE (maxvalue)
If the specified starting value is out of range.
ERROR: DefineSequence: START value (start) can't be < MINVALUE (minvalue)
If the specified starting value is out of range.
ERROR: DefineSequence: MINVALUE (minvalue) can't be >= MAXVALUE (maxvalue)
If the minimum and maximum values are inconsistant.
1998-09-11
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(seqname)
to get a new number from the sequence.
The function
currval('seqname')
may be used
to determine the number returned by the last call to
nextval(seqname)
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-09-11
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, resulting in "holes" in the sequence.
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 is a Postgres
language extension.
1998-09-11
SQL92
There is no CREATE SEQUENCE statement
in SQL92.