第一步:创建一个索引管理表,其中包含,索引名称、最小值、最大值、当前值、增量,并设置主键为索引名称。

CREATE TABLE TB_SEQUENCE (
SEQ_NAME VARCHAR(50) NOT NULL,
MINVALUE INT NOT NULL ,
MAX_VAL DECIMAL(31) NOT NULL,
CURRENT_VAL DECIMAL(31) NOT NULL,
INCREMENT_VAL INT DEFAULT '1' NOT NULL,
PRIMARY KEY (SEQ_NAME)
)

第二步:给索引管理表中插入要实现的一条索引管理数据

INSERT INTO TB_SEQUENCE (SEQ_NAME, MINVALUE, MAX_VAL, CURRENT_VAL, INCREMENT_VAL) values ('SEQ_NUM', 1,  9999999999999999999999999999999, 1, 1);

第三步:创建一个获取下一条数据的函数

DELIMITER $$
create function _nextval(name varchar(50)) returns DECIMAL(31)
begin
declare _cur DECIMAL(31);
declare _maxvalue DECIMAL(31);
declare _increment int;
declare _nextVal DECIMAL(31);
set _cur = (select CURRENT_VAL from TB_SEQUENCE where SEQ_NAME = name);
set _increment = (select INCREMENT_VAL from TB_SEQUENCE where SEQ_NAME = name);
set _maxvalue = (select MAX_VAL from TB_SEQUENCE where SEQ_NAME = name);
set _nextVal = _cur + _increment;
update TB_SEQUENCE set CURRENT_VAL = _nextVal where SEQ_NAME = name ;
if(_nextVal >= _maxvalue) then
update TB_SEQUENCE set CURRENT_VAL = 1 where SEQ_NAME = name ;
end if;
return _nextVal;
end;
$$
DELIMITER ;

好了~

测试一下:

select _nextval('SEQ_NUM') from dual;

点个赞吧,鼓励一下!

mysql 实现类似Oracle 或 db2 sequence的更多相关文章

  1. MySQL实现类似Oracle的序列

    MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列   Oracl ...

  2. MySQL实现类似Oracle中的nextval和currval

    CREATE TABLE `sequence` ( `seq_name` varchar(50) NOT NULL, `current_val` int(11) NOT NULL, `incremen ...

  3. mysql添加类似oracle的伪列及查看表信息

    sql格式: AS rownum, table_name.* ) r, table_name; AS rownum, table_name.字段1, table_name.字段2, table_nam ...

  4. Oracle、DB2、MySql、SQLServer JDBC驱动

    四种数据库JDBC驱动,还列出了连接的Class驱动名和Url Pattern,DB2包括Type 2.Type 3和Type 4三种模式.注意驱动包名称的大小写. Oralce连接驱动包名和URL ...

  5. mysql定时脚本(event),类似oracle的job

    mysql定时脚本(event),类似oracle的job   我有2张表:tb_push_data 和 tb_push_data_log 现在需要每隔一段时间将tb_push_data 符合条件的 ...

  6. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK

    原文地址:http://it.dataguru.cn/article-3352-1.html 摘要: 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来 ...

  7. Mysql使用event,类似oracle job

    MySQL从5.1开始支持event功能,类似oracle的job功能.有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了.如linux crontab功能. ...

  8. MySQL、Oracle、DB2等数据库常规排序、自定义排序和按中文拼音字母排序

    MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3中比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 ...

  9. Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间

    做易买网项目,由于对数据库插入系统时间不了解,常常遇到的问题: 1.java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配.原因:由于获取系统时间类型不对,应为sy ...

随机推荐

  1. HDFS免重启挂载新磁盘

    背景 在生产环境中,集群节点磁盘大小不同,其使用率也会不同,HDFS虽有均衡策略,但也会有数据不平衡的情况,有些节点磁盘就会被打满,然后这个节点就不健康了(Unhealthy Nodes),Yarn的 ...

  2. 5、CPU 的线程与操作系统的线程有何关系?操作系统中的进程和线程是什么关系?

    CPU中的线程和操作系统(OS)中的线程即不同,在调度的时候又有些关联.CPU中的线程,我们叫它们Thread,和OS中的线程的名字一样.它来自同步多线程(SMT,Simultaneous Multi ...

  3. node-java的使用及源码分析

    上篇文章简单提了下node调用java的方法但也只属于基本提了下怎么输出helloworld的层度,这次将提供一些案例和源码分析让我们更好地了解如何使用node-java库. 前置知识: 1.桥接模式 ...

  4. XML序列化反序列化

    using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; nam ...

  5. Vue 源码解读(10)—— 编译器 之 生成渲染函数

    前言 这篇文章是 Vue 编译器的最后一部分,前两部分分别是:Vue 源码解读(8)-- 编译器 之 解析.Vue 源码解读(9)-- 编译器 之 优化. 从 HTML 模版字符串开始,解析所有标签以 ...

  6. LeetCode-078-子集

    子集 题目描述:给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.你可以按 任意顺序 返回解集. 示例说明请见LeetCode官网 ...

  7. mybatis介绍--基于个人学习JavaWeb的使用

    mybatis介绍 该博文放在javaWeb系列下,目的是记录我们javaWeb阶段所学的知识 @time=2022/3/11/11:52(最近休息玩了两天,今天重新启动生活) 一.mybatis发展 ...

  8. layui ajax删除

    表单页面 //监听行工具事件 table.on('tool(test)', function(obj){ var data = obj.data; //console.log(obj) if(obj. ...

  9. 基于jsp的百度Ueditor插件的使用

    初次使用百度的富文本编辑器Ueditor,写下使用经验以备不时之需 只是简单的应用,如有错误,请指正 首先去下载编辑器插件http://ueditor.baidu.com/website/downlo ...

  10. Spring AOP Xml配置过程及解释

    目录 Spring AOP(基于xml) 专业术语: 基于xml的声明式AspectJ 具体实践 Spring AOP(基于xml) 目前主流的AOP框架有两个,分别是Spring AOP和Aspec ...