- 文档首页
云数据库 MySQL 版
内核功能
功能
Sequence Engine
Sequence Engine
本文介绍云数据库 MySQL 版提供的 Sequence Engine。
背景信息
云数据库 MySQL 版提供了 Sequence Engine,用于获取唯一递增序列值。Sequence Engine 是一个逻辑引擎,底层仍使用 InnoDB 存储引擎进行数据持久化,可以兼容现有的数据备份恢复工具。上层通过封装,实现了序列值生成、缓存等等功能。
支持版本
- MySQL 5.7 版本,内核小版本为 MySQL 5.7.32_20241215 及以上。
- MySQL 8.0 版本,内核小版本为 MySQL 8.0.32_20250215 及以上。
- MySQL 8.4 版本,内核小版本为 MySQL 8.4.7_20260415 及以上。
前提条件
已创建实例且实例处于运行中状态。具体操作,请参见创建实例。 创建 Sequence
通过 CREATE SEQUENCE 语句创建 Sequence。
语句中各参数的说明如下:
为了兼容 MySQL Dump 的备份方式,您也可以使用 Engine=Sequence 的方式创建 Sequence。通过插入一行初始数据的方式指定 Sequence 的参数,Sequence 的参数以第一行记录为准。通过 Engine=Sequence 的方式创建的 Sequence,支持用户使用 MySQL Dump 这类工具进行下载、备份和恢复。示例如下:
删除 Sequence
可通过 DROP SEQUENCE 和 DROP TABLE语句删除 Sequence。
获取 nextval
可通过 nextval() 函数或访问 Sequence 表中的 nextval 列来获取 nextval。
- 通过访问 Sequence 表中的 nextval 列
注意
SELECT nextval from <数据库名>.<Sequence名称>; 等同于查询 Sequence 表中的记录,而不是获取 Sequence 的下一个值。
获取 currval
可通过 currval() 函数或访问 Sequence 表中的 currval 列来获取 currval(当前会话中上一次获取的 nextval 的值)。
- 通过访问 Sequence 表中的 currval 列
注意
- SELECT currval from <数据库名>.<Sequence名称>;等同于查询 Sequence 表中的记录,而不是获取 Sequence 的当前值。
- 对于新创建的 Sequence,需要先调用一次该 Sequence 的 NEXTVAL 才能正常进行查询,否则会报 Sequence 'xxx' is not yet defined in current session 错误。
- 如果代理终端的连接池模式为事务级连接池,可能会导致获取的 currval 值不对。如需获取准确的 currval 值,请使用直连模式的代理终端,或关闭实例的数据库代理。
查看 Sequence
可以通过SHOW语句查看到 Sequence 的具体属性。
最近更新时间:2026.10.09 18:07:11