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 retValuefrom tab_sequencewhere 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_sequenceset current_value = current_value + incrementwhere sequence_name = seq_name ;RETURN current_value(seq_name);END
调用方式:
SELECT next_value('seq_common_id') ;
点“阅读原文”了解更多
