mysql實現sequence

孫哥說天下發表於2020-12-17

-----mysql  建立sequence
-- 建立隨機數表
drop table if exists test.sequence_test_hsg; 
create table test.sequence_test_hsg (       
seqname        VARCHAR(50) NOT NULL, -- 序列名稱       
currentval     INT         NOT NULL, -- 當前值       
incrementval   INT         NOT NULL    DEFAULT 1, -- 步長(跨度)       
PRIMARY KEY (seqname)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
-- 插入隨機數資訊
INSERT INTO test.sequence_test_hsg VALUES ('sq_ryid', '1000000000', '1');
-- 查詢
SELECT * FROM test.sequence_test_hsg;
-- 建立獲取當前隨機數函式
-- DROP  FUNCTION  currval;
DELIMITER $ 
CREATE FUNCTION currval (seq_name VARCHAR(50))
RETURNS INTEGER
BEGIN
  DECLARE current INTEGER;
  SET current = 0;
  SELECT currentval INTO current
  FROM  test.sequence_test_hsg
  WHERE seqname = seq_name;
  RETURN current;
END$ 
DELIMITER ;
-- 取下一個值函式
-- DROP  FUNCTION  nextval;
DELIMITER $  
CREATE FUNCTION nextval (seq_name VARCHAR(50))  
RETURNS INTEGER  
CONTAINS SQL  
BEGIN  
   UPDATE test.sequence_test_hsg  
   SET currentval = currentval + incrementval  
   WHERE seqname = seq_name;  
   RETURN currval(seq_name);  
END$  
DELIMITER ; 
-- 查詢
select currval('sq_ryid');
select nextval('sq_ryid');

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990899/viewspace-2742908/,如需轉載,請註明出處,否則將追究法律責任。

相關文章