MySQL 结合数据库表和函数来实现 序列
MySQL创建序列
序列
MySQL中没有序列这个说法
但是可以设置 主键为 auto-increment
也可以结合数据库表和函数来实现 序列相同的效果
创建序列表
创建一张表来存序列相关信息(包括:序列名称、当前序列值、步长)
CREATE TABLE `tab_sequence` (
`sequence_name` varchar(255) NOT NULL COMMENT '序列名称',
`current_value` int(255) NOT NULL COMMENT '序列当前值',
`increment` int(255) DEFAULT NULL COMMENT '步长,每次递增多大'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入一个序列(就是一条表记录)
INSERT INTO tab_sequence(sequence_name, current_value, increment)
VALUES ('seq_common_id', 0, 1);
获取当前序列值
创建函数获取当前序列值
创建一个函数 current_value ,取序列的当前值
CREATE FUNCTION current_value(seq_name varchar(50)) RETURNS int(10)
begin
declare retValue int ;
set retValue = 0 ;
select current_value into retValue
from tab_sequence
where sequence_name = seq_name ;
return retValue;
end
使用方式:
SELECT current_value('seq_common_id') ;
获取下一个序列值
创建函数获取下一个序列值
创建一个函数 next_value,取序列的下一个值
CREATE FUNCTION next_value(seq_name varchar(50)) RETURNS int(10)
BEGIN
update tab_sequence
set current_value = current_value + increment
where sequence_name = seq_name ;
RETURN current_value(seq_name);
END
调用方式:
SELECT next_value('seq_common_id') ;
点“阅读原文”了解更多