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')