MySql实现sequence功能的代码

mysql实现sequence功能

1.建立sequence记录表

CREATE TABLE `sys_sequence` (
 `seq_name` varchar(50) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
 `min_value` int(11) NOT NULL,
 `max_value` int(11) NOT NULL,
 `current_value` int(11) NOT NULL,
 `increment_value` int(11) NOT NULL DEFAULT ‘1‘,
 PRIMARY KEY (`seq_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

2.建立sequence基础函数

DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `_nextval`(name varchar(50)) RETURNS int(11)
begin
declare _cur int;
declare _maxvalue int; -- 接收最大值
declare _increment int; -- 接收增长步数
set _increment = (select increment_value from sys_sequence where seq_name = name);
set _maxvalue = (select max_value from sys_sequence where seq_name = name);
set _cur = (select current_value from sys_sequence where seq_name = name);
update sys_sequence           -- 更新当前值
set current_value = _cur + increment_value
where seq_name = name ;
if(_cur + _increment >= _maxvalue) then -- 判断是都达到最大值
    update sys_sequence
    set current_value = min_value
    where seq_name = name ;
end if;
return _cur;
end$$
DELIMITER ;

3.插入想要建立的sequence

INSERT INTO `mydb`.`sys_sequence`
(`seq_name`,
`min_value`,
`max_value`,
`current_value`,
`increment_value`)
VALUES
(‘seq_name1‘, 1, 99999999, 1, 1);

4.使用sequence

select _nextval(‘seq_name1‘);

原文地址:https://www.cnblogs.com/rinack/p/10558555.html

时间: 2024-10-20 05:43:57

MySql实现sequence功能的代码的相关文章

mysql数据库分区功能及实例详解

分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解 一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存

MySQL的Auto-Failover功能

今天来体验一下MySQL的Auto-Failover功能,这里用到一个工具MySQL Utilities,它的功能很强大.此工具提供如下功能:(1)管理工具 (克隆.复制.比较.差异.导出.导入)(2)复制工具 (安装.配置)(3)一般工具 (磁盘使用情况.冗余索引.搜索元数据)而我们用它来实现Master-Slave的自动Failover,下面开始 Master:192.168.13.194Slave:192.168.13.159此Failover需要建立在GTID的基础上所以MySQL版本必

EA强大功能之代码注释

前面讲了EA如何方便我们生成代码,这次讲一下,如何生成详细的注释. 1.文件表头注释 (1)点击工具----选项 在常规项里修改作者: 在代码工程中修改代码工程的默认语言. (2)修改文件模板 点击代码工厂模板以后如图: 修改语言--点击File,修改模板.点击保存.完成. 2.类表头注释:(以SqlUserDAL类为例) 修改类的信息,如图所示: 3.方法前注释 添加一个类的方法,填写齐全的信息.如图: 法前的注释主要是介绍本方法的功能以及参数,所以填写全这两个就行. 4.参数的注释 点击编辑

【MySQL】MySQL的Sequence

Oracle的Sequence用爽了,发现MySQL没有Sequence,那么,自己写一个呗. > 最简单的实现 先建一个表存储当前值: CREATE TABLE `t_sequence` ( `sequence_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '序列名称' , `value` int(11) NULL DEFAULT NULL COMMENT '当前值' , PRIMAR

.Net Web产品中增加自己的功能和代码?

背景: 最近有一个项目,一个朋友找了一个网上比较成熟的CMS系统(动易),让我给他增加一些功能,这个产品功能挺多,但是没有源代码.按照以前的做法,就是直接反编译他的dll,生成源代码,然后在源代码的基础上修改和完善自己的功能.但是研究了一下这个产品,bin下面的DLL非常多,有主要的,还有辅助的.如果每个dll都反编译,简直不现实. ? 用发编译工具?ILSpy打开里面几个主要的dll,发现还加壳混淆了,用De4Dot反混淆出来.里面的代码还是非常清晰,但是如果每个dll都这样搞,岂不累死. ?

EA强大功能之代码凝视

前面讲了EA怎样方便我们生成代码,这次讲一下,怎样生成具体的凝视. 1.文件表头凝视 (1)点击工具----选项 在常规项里改动作者: 在代码project中改动代码project的默认语言. (2)改动文件模板 点击代码工厂模板以后如图: 改动语言--点击File,改动模板.点击保存.完毕. 2.类表头凝视:(以SqlUserDAL类为例) 改动类的信息,如图所看到的: 3.方法前凝视 加入一个类的方法,填写齐全的信息.如图: 法前的凝视主要是介绍本方法的功能以及參数,所以填写全这两个即可.

通过.NET实现后台自动发送Email功能的代码示例

原文:通过.NET实现后台自动发送Email功能的代码示例 通过.NET实现后台自动发送邮件功能的代码,可以将一些基础信息放到web.config文件中进行保存: Web.config文件信息段: <system.net> <mailSettings> <smtp deliveryMethod="Network" from="待发送邮箱地址"> <network host="待发送邮箱SMTP地址" us

分享:mysql异地数据库备份实例代码

分享:mysql异地数据库备份实例代码 mysql现在应用在操作系统中包括有linux系统与windows系统,下面是多备份分享常用的两种系统中实现mysql异地数据库备份,有需要了解的朋友可参考. windows的任务计划定时执行该文件. 文件内容如下: cd F:/MySQLBackup f: mysqldump -h ip -uusername -ppassworddbname>F:/MySQLBackup/PersonBackupMonday.sql username:数据库用户 pas

WPF DataGrid分页功能实现代码 修改原作者不能实现的部分

这两天需要给Datagrid加个分页,查找了一些相关的文章,发现有一个写了一个控件比较好,地址是 http://blog.csdn.net/zdw_wym/article/details/8221894 感谢这位大神12年的帖子,但是照着做了以后,发现除了点击数字和GO按钮好使意外,神马“首页.上一页.下一页.末页”都不好使. 继续找寻相关的资料和查看大神的源码,发现有的地方写的不对,因为textblock没有click事件,而大神写了click事件,所以没有得到触发,介于这个问题,我稍作了修改