What is an SQL Sequence?
Sequence is a feature supported by some database systems to produce unique values on demand. Some DBMS like MySQL supports AUTO_INCREMENT
in place of Sequence.
AUTO_INCREMENT
is applied on columns, it automatically increments the column value by 1
each time a new record is inserted into the table.
Sequence is also some what similar to AUTO_INCREMENT
but it has some additional features too.
Creating a Sequence
Syntax to create a sequence is,
CREATE SEQUENCE sequence-name
START WITH initial-value
INCREMENT BY increment-value
MAXVALUE maximum-value
CYCLE | NOCYCLE;
- The initial-value specifies the starting value for the Sequence.
- The increment-value is the value by which sequence will be incremented.
- The maximum-value specifies the upper limit or the maximum value upto which sequence will increment itself.
- The keyword
CYCLE
specifies that if the maximum value exceeds the set limit, sequence will restart its cycle from the begining.
- And,
NO CYCLE
specifies that if sequence exceeds MAXVALUE
value, an error will be thrown.
Using Sequence in SQL Query
Let's start by creating a sequence, which will start from 1
, increment by 1
with a maximum value of 999
.
CREATE SEQUENCE seq_1
START WITH 1
INCREMENT BY 1
MAXVALUE 999
CYCLE;
Now let's use the sequence that we just created above.
Below we have a class table,
The SQL query will be,
INSERT INTO class VALUE(seq_1.nextval, 'anu');
Resultset table will look like,
ID | NAME |
1 | abhi |
2 | adam |
4 | alex |
1 | anu |
Once you use nextval
the sequence will increment even if you don't Insert any record into the table.