當前位置:
首頁 >
给 MySQL 增加 Sequence 管理功能
發布時間:2025/3/15
35
豆豆
生活随笔
收集整理的這篇文章主要介紹了
给 MySQL 增加 Sequence 管理功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-- Sequence 管理表 DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( name VARCHAR(50) NOT NULL, current_value INT NOT NULL, increment INT NOT NULL DEFAULT 1, PRIMARY KEY (name) ) ENGINE=InnoDB; -- 取當前值的函數 DROP FUNCTION IF EXISTS currval; DELIMITER $ CREATE FUNCTION currval (seq_name VARCHAR(50)) RETURNS INTEGER LANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN DECLARE value INTEGER; SET value = 0; SELECT current_value INTO value FROM sequence WHERE name = seq_name; RETURN value; END $ DELIMITER ; -- 取下一個值的函數 DROP FUNCTION IF EXISTS nextval; DELIMITER $ CREATE FUNCTION nextval (seq_name VARCHAR(50)) RETURNS INTEGER LANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN UPDATE sequence SET current_value = current_value + increment WHERE name = seq_name; RETURN currval(seq_name); END $ DELIMITER ; -- 更新當前值的函數 DROP FUNCTION IF EXISTS setval; DELIMITER $ CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER) RETURNS INTEGER LANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN UPDATE sequence SET current_value = value WHERE name = seq_name; RETURN currval(seq_name); END $ DELIMITER ; /* -- 測試 INSERT INTO sequence VALUES ('TestSeq', 0, 1); SELECT SETVAL('TestSeq', 10); SELECT CURRVAL('TestSeq'); SELECT NEXTVAL('TestSeq'); */
轉載于:https://www.cnblogs.com/shihao/archive/2012/02/14/2351045.html
總結
以上是生活随笔為你收集整理的给 MySQL 增加 Sequence 管理功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下的pdf分割合并软件
- 下一篇: NET 下数据库图片的存入与读取