vlambda博客
学习文章列表

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)begindeclare 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)BEGINupdate 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') ;




点“阅读原文”了解更多