• 给 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'); */
  • 相关阅读:
    IE表单拦截器
    使用网站作为WCF服务宿主的几种做法
    Javascript执行效率小结
    Ajax无刷新技术实现省市县三级联动下拉菜单Asp.Net
    序列化DataContractSerializer
    变化多端的列表
    腾讯微信
    Mac OS 和 iOS 操作系统架构
    程序员远离你的细节思维
    ObjectiveC概述
  • 原文地址:https://www.cnblogs.com/shihao/p/2351045.html
Copyright © 2020-2023  润新知