📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

Sequence Functions

TiDB 中的序列函数用于返回或设置使用 CREATE SEQUENCE 语句创建的序列对象的值。

Function nameDescription
NEXTVAL()返回序列的下一个值。
NEXT VALUE FOR返回序列的下一个值(NEXTVAL() 的别名)。
SETVAL()设置序列的当前值。
LASTVAL()返回当前会话中由序列生成的最后一个值。

NEXTVAL()

NEXTVAL() 函数返回序列的下一个值。

示例:

创建一个名为 s1 的序列:

CREATE SEQUENCE s1;

s1 获取下一个值:

SELECT NEXTVAL(s1);

输出如下:

+-------------+ | NEXTVAL(s1) | +-------------+ | 1 | +-------------+ 1 row in set (0.00 sec)

NEXT VALUE FOR

NEXT VALUE FOR 函数是 NEXTVAL() 的别名。

示例:

使用 NEXTVAL() 获取 s1 的下一个值:

SELECT NEXTVAL(s1);

输出如下:

+-------------+ | NEXTVAL(s1) | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec)

使用 NEXT VALUE FOR 获取 s1 的下一个值:

SELECT NEXT VALUE FOR s1;

输出如下:

+-------------------+ | NEXT VALUE FOR s1 | +-------------------+ | 3 | +-------------------+ 1 row in set (0.00 sec)

SETVAL()

SETVAL(n) 函数设置序列的当前值。

示例:

s1 获取下一个值:

SELECT NEXTVAL(s1);

输出如下:

+-------------+ | NEXTVAL(s1) | +-------------+ | 4 | +-------------+ 1 row in set (0.00 sec)

s1 的当前值设置为 10

SELECT SETVAL(s1, 10);

输出如下:

+----------------+ | SETVAL(s1, 10) | +----------------+ | 10 | +----------------+ 1 row in set (0.00 sec)

验证设置为 10 后的下一个值:

SELECT NEXTVAL(s1);

输出如下:

+-------------+ | NEXTVAL(s1) | +-------------+ | 11 | +-------------+ 1 row in set (0.00 sec)

LASTVAL()

LASTVAL() 函数返回在当前会话中由序列生成的最后一个值。

示例:

获取当前会话中由 s1 生成的最后一个值:

SELECT LASTVAL(s1);

输出如下:

+-------------+ | LASTVAL(s1) | +-------------+ | 11 | +-------------+ 1 row in set (0.00 sec)

MySQL compatibility

MySQL 不支持按照 ISO/IEC 9075-2 定义的创建和操作序列的函数和语句。

文档内容是否有帮助?