通過Mysql數據庫的函數獲取不重複的自增值

1.創建一個儲值表:存儲每次自增後的最新值,用於讀取

CREATE TABLE `sequence` (
    `name` VARCHAR(50) NOT NULL,    //自增名
    `current_value` INT(11) NOT NULL,    //自增的最新值
    `increment` INT(11) NOT NULL DEFAULT '1'    //每次的增量
)

2.創建自增函數:

參數:自增表的name

返回:下一個自增值

CREATE DEFINER=`root`@`%` FUNCTION `sequence_nextval`(
	`seq_name` VARCHAR(50)
)
RETURNS int(11)
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '獲取下一個值'
BEGIN  

DECLARE VALUE INTEGER;  
  
SET VALUE = 0;
  
UPDATE sequence SET current_value = current_value + increment WHERE NAME = seq_name;  

SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name;  
  
RETURN VALUE;  
  
END

3.調用:

SELECT sequence_nextval(#{name})

4.示例:

查詢:

 

歡迎加Q討論:361528529 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章