msql 实现sequence功能增强
create table sequence (
seq_name VARCHAR(50) NOT NULL COMMENT '序列名称',
min_val INT UNSIGNED NOT NULL COMMENT '最小值',
max_val INT UNSIGNED NOT NULL COMMENT '最大值',
if_cycle INT UNSIGNED NOT NULL COMMENT '是否循环',
if_use INT UNSIGNED NOT NULL COMMENT '是否使用中:0:未使用,1:已使用',
current_val INT UNSIGNED NOT NULL COMMENT '当前值',
increment_val INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '步长(跨度)',
PRIMARY KEY (seq_name)
);
delimiter $$
create function currval(v_seq_name VARCHAR(50))
returns integer
begin
declare v_curr_val integer;
set v_curr_val := 0;
select current_val into v_curr_val
from sequence
where seq_name = v_seq_name;
return v_curr_val;
end$$
create function nextval(v_seq_name VARCHAR(50))
returns INTEGER
begin
declare v_curr_val INTEGER;
declare v_increment_val INTEGER;
declare v_if_cycle INTEGER;
declare v_next_val INTEGER;
declare v_min_val INTEGER;
declare v_max_val INTEGER;
update sequence set if_use = 1 where seq_name = v_seq_name;
select current_val, min_val, max_val, increment_val, if_cycle
into v_curr_val, v_min_val, v_max_val, v_increment_val, v_if_cycle from sequence where seq_name = v_seq_name;
set v_next_val := v_curr_val + v_increment_val;
if (v_next_val > v_max_val) and (v_if_cycle = 0) then
set v_next_val := -1;
else
set v_next_val := mod(v_next_val, v_max_val + 1);
IF v_next_val < v_min_val then
set v_next_val := v_min_val;
end if;
update sequence set current_val = v_next_val where seq_name = v_seq_name;
end if;
update sequence set if_use = 0 where seq_name = v_seq_name;
return v_next_val;
end$$
create function setval(v_seq_name VARCHAR(50), v_new_val INTEGER)
returns integer
begin
declare v_min_val int;
declare v_max_val int;
update sequence set if_use = 1 where seq_name = v_seq_name;
select min_val, max_val into v_min_val, v_max_val from sequence where seq_name = v_seq_name;
if (v_new_val > v_max_val) or (v_new_val < v_min_val) then
set v_new_val := -1;
else
update sequence set current_val = v_new_val where seq_name = v_seq_name;
end if;
update sequence set if_use = 0 where seq_name = v_seq_name;
return v_new_val;
end$$
delimiter ;
msql 实现sequence功能增强的更多相关文章
- MWeb 1.4 新功能介绍二:静态博客功能增强
MWeb 比较有特色的是一键生成静态博客功能,然后从 MWeb 最开始规划要做静态博客生成功能时,我就希望 MWeb 的静态博客生成功能在易用的同时,还要有很强大的扩展性. 比如说能自己增加网站公告, ...
- VMare中安装“功能增强工具”,实现CentOS5.5与win7host共享文件夹的创建
读者如要转载,请标明出处和作者名,谢谢. 地址01:http://space.itpub.net/25851087 地址02:http://www.cnblogs.com/zjrodger/ 地址03 ...
- Java SE 5.0 - SE 8 的功能增强
Table of Contents 前言 Java 5.0 Generics Enhanced for Loop Autoboxing Typesafe Enums Varargs Static Im ...
- jquery-7 jquery中的文档处理方法有哪些(方法的参数表示功能增强)
jquery-7 jquery中的文档处理方法有哪些(方法的参数表示功能增强) 一.总结 一句话总结:多看参考文档,多看主干目录.一般的功能分两个方法来实现,一个对应标签,一个对应标签和事情,比如克隆 ...
- DevExpress WPF v19.1:Data Grid/Tree List等控件功能增强
行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WPF v19.1中新增的一些控件及部 ...
- DevExpress WinForms v19.1新版亮点:Spreadsheet/Sunburst控件功能增强
行业领先的.NET界面控件DevExpress v19.1终于正式发布,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WinForms v19.1中新增的一些控 ...
- Kubernetes 弹性伸缩HPA功能增强Advanced Horizontal Pod Autoscaler -介绍部署篇
背景 WHAT(做什么) Advanced Horizontal Pod Autoscaler(简称:AHPA)是kubernetes中HPA的功能增强. 在兼容原生HPA功能基础上,增加预测.执行模 ...
- Tapdata Cloud 版本上新!新增TiDB等数据源支持,连接和任务功能增强,体验更优
Tapdata Cloud cloud.tapdata.net Tapdata Cloud 是国内首家异构数据库实时同步云平台,目前支持Oracle.MySQL.PG.SQL Server.Mongo ...
- ORACLE 12C RMAN 功能增强
在ORACLE 12C中对rman的功能有了不少增强,在以前的文章中写过RMAN RECOVER TABLE功能,这里另外补充rman增强的两个小功能(sql语句和数据文件分割)数据库版本 SQL&g ...
随机推荐
- 【Android测试】【第十九节】Espresso——API详解
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5997557.html 前言 Espresso的提供了不少A ...
- 2017年8个UI设计流行趋势
设计趋势变化的理由需要考虑各种各样的因素.让我们来一起看看2017年的设计流行趋势吧. 应用界面的设计趋势是不断变化的.随着时间的推移他也在不断的成长,进化.虽然有些趋势还有待检验,但我们还是需要不断 ...
- WordPress基础:自定义菜单
需要自定义一个菜单,可以访问后台->外观->菜单
- 升级Xcode8控制台打印出来这些东西
升级Xcode 8之后每次控制台都会出现以下情况: subsystem: com.apple.BackBoardServices.fence, category: App, enable_level ...
- LeetCode Moving Average from Data Stream
原题链接在这里:https://leetcode.com/problems/moving-average-from-data-stream/ 题目: Given a stream of integer ...
- LeetCode Plus One Linked List
原题链接在这里:https://leetcode.com/problems/plus-one-linked-list/ 题目: Given a non-negative number represen ...
- Oracle 正则表达式函数-REGEXP_INSTR 使用例子
原文在这 戳 REGEXP_INSTR 6个参数 第一个是输入的字符串 第二个是正则表达式 第三个是标识从第几个字符开始正则表达式匹配.(默认为1) 第四个是标识第几个匹配组.(默认为1) 第五个是指 ...
- java 支付宝 第三方即时到账支付 接口
alipay 的几个内核功能文件:=================================================================================== ...
- 实测:Windows 8.1 (Windows Blue) 第三方桌面应用无法支持Retina屏,效果与Windows8.0似无差别。
首先我是在VMWARE下装的Windows Blue,是否改用BootCamp直接装就没问题我不知道,理论上应该无差别. 谣言里那个Windows Blue里的缩放功能可以完美支持Retina,但实际 ...
- 【转】CentOS系统中常用查看日志命令
来源:http://www.centoscn.com/CentOS/help/2014/0310/2540.html Linux IDE RedHat 防火墙活动 .cat tail -f 日 志 文 ...