MySql 生成类似于Oracle Seq 序列

CREATE TABLE `sys_sequence` (
   `NAME` varchar(50) NOT NULL,
   `CURRENT_VALUE` int(6) NOT NULL DEFAULT '0',
   `INCREMENT` int(6) NOT NULL DEFAULT '1',
   PRIMARY KEY (`NAME`)
 )

第一步创建一张序列表 用来存入不同名称的序列 

NAME 序列名称

CURRENT_VALUE 初始值

INCREMENT 步进值

INSERT INTO SYS_SEQUENCE(NAME,CURRENT_VALUE,INCREMENT) VALUES('seq_test', 1,1);//插入值

创建一个查询当前序列值的函数 

DELIMITER $$
 
DROP FUNCTION IF EXISTS `currval`$$
 
CREATE FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS INT(11)
BEGIN
DECLARE VALUE INTEGER;
SET VALUE=0;
SELECT current_value INTO VALUE
FROM sys_sequence 
WHERE NAME=seq_name;
RETURN VALUE;
END$$
 
DELIMITER ;

 查询当前测试序列的值

select currval('seq_test');

 创建一个获取序列下个值函数

    就是当前的值+步进值重新 set给当前值并返回数据


DELIMITER $$
DROP FUNCTION IF EXISTS `nextval`$$
 
CREATE FUNCTION `nextval`(seq_name varchar(50)) RETURNS int(6)
BEGIN
UPDATE sys_sequence
SET CURRENT_VALUE = CURRENT_VALUE + INCREMENT
where name=seq_name;
return currval(seq_name);
END$$

 查询下一个序列的值

select nextval('seq_test')

 

转载于:https://my.oschina.net/u/3154333/blog/2050238

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值