mysql实现sequence自增长

1创建表

CREATE TABLE `tb_sequence` (
  `seq_name` varchar(50) NOT NULL COMMENT '字段名称',
  `min` int(11) NOT NULL COMMENT '最小值',
  `max` int(11) NOT NULL COMMENT '最大值',
  `current_val` int(11) NOT NULL COMMENT '当前',
  `increment_val` int(11) NOT NULL DEFAULT '1' COMMENT '步长',
  `remark` varchar(50) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`seq_name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2创建自增函数

CREATE DEFINER=`root`@`%` FUNCTION `_nextval`(name varchar(50)) RETURNS int(11)
begin    
declare _cur int;  
declare _maxvalue int; 
declare _increment int; 
set _increment = (select increment_val from tb_sequence where seq_name = name);  
set _maxvalue = (select max from tb_sequence where seq_name = name);  
set _cur = (select current_val from tb_sequence where seq_name = name);    
update tb_sequence
 set current_val = _cur + increment_val    
 where seq_name = name ; 
return _cur;    

end

3.取值

SELECT right(1000000+_nextval(seq_name),6)  FROM DUAL

可以补全6位


建表语句中修改为MyISAM改为了InnoDB,因为5.6中MyISAM不支持事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值