CREATE SEQUENCE
Defines a named sequence number generator. Named sequences let you set the default values of primary key columns. Sequences guarantee uniqueness and avoid constraint enforcement issues.
A sequence has minimum and maximum values, a starting position, and an increment. The increment can be positive (ascending) or negative (descending). By default, an ascending sequence starts at 1, its minimum value, and a descending sequence starts at -1, its maximum value. You can specify minimum, maximum, increment, and start values for a new sequence, so long as the values are mathematically consistent.
For more information about sequence types and usage, see Sequences.
Syntax
CREATE SEQUENCE [ IF NOT EXISTS ] [[database.]schema.]sequence
[ INCREMENT [ BY ] integer ]
[ MINVALUE integer | NO MINVALUE ]
[ MAXVALUE integer | NO MAXVALUE ]
[ START [ WITH ] integer ]
[ CACHE integer | NO CACHE ]
[ CYCLE | NO CYCLE ]
Arguments
IF NOT EXISTS
If an object with the same name exists, return without creating the object. If you do not use this directive and the object already exists, Vertica returns with an error message.
The
IF NOT EXISTS
clause is useful for SQL scripts where you might not know if the object already exists. The ON ERROR STOP directive can be helpful in scripts.[
database
.]
schema
Database and schema. The default schema is
public
. If you specify a database, it must be the current database.sequence
- Name of the sequence to create, where the name conforms to conventions described in Identifiers. It must also be unique among all names of sequences, tables, projections, views, and models within the same schema.
INCREMENT
integer
Positive or negative minimum value change on each call to NEXTVAL. The default is 1.
This value is a minimum increment size. The sequence can increment by more than this value unless you also specify
NO CACHE
.MINVALUE
integer
| NO MINVALUE
- Minimum value the sequence can generate. The default depends on the direction of the sequence:
-
Ascending sequence: 1
-
Descending sequence: -263
-
MAXVALUE
integer
| NO MAXVALUE
- Maximum value the sequence can generate. The default depends on the direction of the sequence:
-
Ascending sequence: 263
-
Descending sequence: -1
-
START [WITH]
integer
- Initial value of the sequence. The next call to NEXTVAL returns this start value. By default, an ascending sequence begins with the minimum value and a descending sequence begins with the maximum value.
CACHE
integer
| NO CACHE
How many unique sequence numbers to pre-allocate and store in memory on each node for faster access. Vertica sets up caching for each session and distributes it across all nodes. A value of 0 or 1 is equivalent to
NO CACHE
.Caution
If sequence caching is set to a low number, nodes might request a new set of cache values more frequently. While it supplies a new cache, Vertica must lock the catalog. Until Vertica releases the lock, other database activities such as table inserts are blocked, which can adversely affect overall performance.By default, the sequence cache is set to 250,000.
For details, see Distributing sequences.
CYCLE | NO CYCLE
- How to handle reaching the end of the sequence. The default is
NO CYCLE
, meaning that a call to NEXTVAL returns an error after the sequence reaches its upper or lower limit.CYCLE
instead wraps, as follows:- Ascending sequence: wraps to the minimum value.
- Descending sequence: wraps to the maximum value.
Privileges
Non-superusers: CREATE privilege on the schema
Examples
See Creating and using named sequences.