Mysql數據庫創建序列


今天想使用做一個單點登錄系統的,使用的是mysql數據庫,因為之前使用的是sqlserver數據庫,建完表之后返現沒有沒有序列,網上找了一下發現mysql是沒有提供

序列進行取值的。

那么mysql 想有一個類似SQL server的功能應該如何實現呢。

實現思路   建立一張表存放對應序列號的當前值 --》創建一個函數每去一次值則對應的序列號增加

如圖所示:

第一步;建立對應的表

CREATE TABLE seqUserloginInfo (
name VARCHAR(50) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NULL DEFAULT 1,
PRIMARY KEY (name)
);

 

第二步.建立對應的函數(也可以是存儲過程)

1查詢函數

CREATE FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)
BEGIN
DECLARE value int;
set value=0;
SELECT current_value INTO value FROM seqUserloginInfo where name=seq_name;
return value;
END

2.消耗一個序列

 

CREATE FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)
BEGIN
UPDATE seqUserloginInfo SET current_value = current_value + increment where name=seq_name ;
RETURN currval(seq_name);
END

3.消耗多個序列

CREATE FUNCTION `setval`(seq_name VARCHAR(50), value INTEGER) RETURNS int(11)
BEGIN
UPDATE seqUserloginInfo
SET current_value = value where name=seq_name;
RETURN currval(seq_name);
END

 

 

 

測試:

 

 

SELECT nextval('userlogininfo',10)

SELECT setval('userlogininfo',10)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM