Sequence Functions
Sequence functions in TiDB are used to return or set values of sequence objects created using the CREATE SEQUENCE statement.
| Function name | Description |
|---|---|
NEXTVAL() | Returns the next value of a sequence. |
NEXT VALUE FOR | Returns the next value of a sequence (alias for NEXTVAL()). |
SETVAL() | Sets the current value of a sequence. |
LASTVAL() | Returns the last value generated by a sequence in the current session. |
NEXTVAL()
The NEXTVAL() function returns the next value of a sequence.
Example:
Create a sequence named s1:
CREATE SEQUENCE s1;
Get the next value from s1:
SELECT NEXTVAL(s1);
The output is as follows:
+-------------+
| NEXTVAL(s1) |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
NEXT VALUE FOR
The NEXT VALUE FOR function is an alias for NEXTVAL().
Example:
Get the next value from s1 using NEXTVAL():
SELECT NEXTVAL(s1);
The output is as follows:
+-------------+
| NEXTVAL(s1) |
+-------------+
| 2 |
+-------------+
1 row in set (0.00 sec)
Get the next value from s1 using NEXT VALUE FOR:
SELECT NEXT VALUE FOR s1;
The output is as follows:
+-------------------+
| NEXT VALUE FOR s1 |
+-------------------+
| 3 |
+-------------------+
1 row in set (0.00 sec)
SETVAL()
The SETVAL(n) function sets the current value of a sequence.
Example:
Get the next value from s1:
SELECT NEXTVAL(s1);
The output is as follows:
+-------------+
| NEXTVAL(s1) |
+-------------+
| 4 |
+-------------+
1 row in set (0.00 sec)
Set the current value of s1 to 10:
SELECT SETVAL(s1, 10);
The output is as follows:
+----------------+
| SETVAL(s1, 10) |
+----------------+
| 10 |
+----------------+
1 row in set (0.00 sec)
Verify the next value after setting it to 10:
SELECT NEXTVAL(s1);
The output is as follows:
+-------------+
| NEXTVAL(s1) |
+-------------+
| 11 |
+-------------+
1 row in set (0.00 sec)
LASTVAL()
The LASTVAL() function returns the last value generated by a sequence in the current session.
Example:
Get the last value generated by s1 in the current session:
SELECT LASTVAL(s1);
The output is as follows:
+-------------+
| LASTVAL(s1) |
+-------------+
| 11 |
+-------------+
1 row in set (0.00 sec)
MySQL compatibility
MySQL does not support the functions and statements for creating and manipulating sequences as defined in ISO/IEC 9075-2.