MySql 生成類似於Oracle Seq 序列
阿新 • • 發佈:2018-12-08
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')