📅  最后修改于: 2023-12-03 15:06:52.754000             🧑  作者: Mango
MySQL 序列是一种用于生成唯一整数的对象。常常用来作为主键列的值,以保证数据表中每一行的唯一性。在 MySQL 8.0 版本之后,引入了序列功能。
使用以下语法可以创建一个序列:
CREATE SEQUENCE sequence_name [START WITH start_value] [INCREMENT BY increment_value] [MINVALUE min_value] [MAXVALUE max_value] [CYCLE|NO CYCLE] [CACHE cache_value];
sequence_name
:序列的名称。start_value
:序列的起始值,默认为 1。increment_value
:序列的递增值,默认为 1。min_value
:序列的最小值,默认为 -263。max_value
:序列的最大值,默认为 263-1。CYCLE|NO CYCLE
:是否循环,默认为 NO CYCLE
。当达到最大值时,如果定义了循环,会回到最小值重新开始递增;否则会抛出错误。cache_value
:缓存的值,默认为 1000。MySQL会先缓存一定数量的序列值,以提升性能。例如,以下语句可以创建名为 my_sequence
的序列:
CREATE SEQUENCE my_sequence START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 100 NO CYCLE CACHE 10;
使用以下语法可以返回序列的下一个值:
NEXT VALUE FOR sequence_name;
例如,在已创建的序列 my_sequence
上执行以下语句:
SELECT NEXT VALUE FOR my_sequence;
会返回 1
。
序列可用于各种需要唯一标识符的场景中,例如主键、订单号、流水号等。使用序列作为主键时,可以避免因为数据插入频繁而导致主键覆盖的问题。同时,通过序列可以避免手动编写唯一标识符的代码,提高了开发效率。
MySQL 序列是一个非常实用的功能,它可以帮助我们轻松生成唯一标识符。当你遇到需要自动生成唯一标识符的场景时,就可以考虑使用 MySQL 序列了。