CREATE SEQUENCE seqname [INCREMENT increment] [MINVALUE minvalue] [MAXVALUE maxvalue] [START start] [CACHE cache] [CYCLE]
The name of a sequence to be created.
The INCREMENT increment clause is optional. A positive value will make an ascending sequence, a negative one a descending sequence. The default value is 1.
The optional clause MINVALUE minvalue determines the minimum value a sequence can be. The defaults are 1 and -2147483647 for ascending and descending sequences, respectively.
Use the optional clause MAXVALUE maxvalue to determine the maximum value for the sequence. The defaults are 2147483647 and -1 for ascending and descending sequences, respectively.
The optional START start clause enables the sequence to begin anywhere. The default starting value is minvalue for ascending sequences and maxvalue for descending ones.
The CACHE cache 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.
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.
Message returned if the command is successful.
If the sequence specified already exists.
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.
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.
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');
CREATE SEQUENCE statement is a PostgreSQL language extension.
There is no CREATE SEQUENCE statement on SQL92.