我们知道mysql中是不支持sequence的,一般是建表的时间使这个字段自增。

如       create table table_name(id int auto_increment primary key, ...);

或者alter table table_ame add id int auto_increment primary key  //字段,一定设置为primary key

或者重设自增字段的起步值 alter table table_name AUTO_INCREMENT=n

但是我们在oracle中经常使用sequence_name.nextval,或者在程序中我们使用先select sequence_name.value from dual.如果我们的开发框架要同时支持oracle和mysql。一般会把取sequence提出来。如果在mysql中提供一个类似的函数,这样提出来会比较方便些。这是一种使用的场景。下面就说说怎么在mysql中实现一个nextval函数吧。

1先建一表

CREATE TABLE `sys_sequence` (

`NAME` varchar(50) NOT NULL,

`CURRENT_VALUE` int(11) NOT NULL DEFAULT '0',

`INCREMENT` int(11) NOT NULL DEFAULT '1',

PRIMARY KEY (`NAME`)

)

2.然后建立函数

DELIMITER $$

DROP FUNCTION IF EXISTS `currval`$$

CREATE DEFINER=`root`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS INT(11)

BEGIN

DECLARE VALUE INTEGER;

SET VALUE=0;

SELECT current_value INTO VALUE

FROM sys_sequence

WHERE NAME=seq_name;

RETURN VALUE;

END$$

DELIMITER ;

CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name varchar(50)) RETURNS int(11)

BEGIN

UPDATE sys_sequence

SET CURRENT_VALUE = CURRENT_VALUE + INCREMENT

where name=seq_name;

return currval(seq_name);

END

CREATE DEFINER=`root`@`%` FUNCTION `setval`(seq_name varchar(50),value integer) RETURNS int(11)

BEGIN

update sys_sequence

set current_value=value

where name=seq_name;

return currval(seq_name);

END

测试下 select nextval('name') ; 搞定。

oracle nextval mysql_mysql中实现类似oracle中的nextval函数相关推荐

  1. mysql execute immediate_PostgreSQL中function中实现类似Oracle的execute immediate的功能

    PostgreSQL中function中实现类似Oracle的execute immediate和dbms_output_putline的功能 首先需要说明的是,PostgreSQL中没有像Oracl ...

  2. vue中使用类似html中a标签的锚链接,实现点击定位到当前页面的某个位置

    在vue中实现点击文字,定位到当前页面的某个位置,具体实现效果如下图所示: 主要实现方式为: <div @click="toJump1">定位1</div> ...

  3. oracle decode sqlserver,sqlserver 的类似oracle的decode函数

    原来系统是在oracle上开发的,后来客户一声令下,就转移到sqlserver了.在写存储过程的时候,发现decode方法没有,可以用case when来替代.但是之前项目会议上领导又提出,客户说有可 ...

  4. mysql nextval同步锁_mysql中实现类似oracle中的nextval函数

    我们知道mysql中是不支持sequence的,一般是建表的时间使这个字段自增. 如       create table table_name(id int auto_increment prima ...

  5. web.py中实现类似Django中的ORM的查询效果

    Django中的对象查询 Django框架自带了ORM,实现了一些比较强大而且方便的查询功能,这些功能和表无关.比如下面这个例子: class Question(models.Model):quest ...

  6. 20、在Linux中实现类似windows中获取配置文件的函数GetProfileString

    在读取配置文件时,window环境下,有GetProfileString函数,而Linux下则没有.我写了一个能实现其功能的函数,如下所示,基本思想是捉住配置文件中用"[]"标记的 ...

  7. mysql 类似 oracle connect by,mysql中实现相仿oracle的SYS_CONNECT_BY_PATH功能

    mysql中实现类似oracle的SYS_CONNECT_BY_PATH功能 oracle中的SYS_CONNECT_BY_PATH函数为开发带来了便利,mysql中如何实现类的功能呢? DELIMI ...

  8. mysql sys_connect_by_path_mysql中实现相仿oracle的SYS_CONNECT_BY_PATH功能

    mysql中实现类似oracle的SYS_CONNECT_BY_PATH功能 oracle中的SYS_CONNECT_BY_PATH函数为开发带来了便利,mysql中如何实现类的功能呢? DELIMI ...

  9. sequence oracle mysql,oracle sequence转mysql(mysql实现oracle的sequence功能)

    最近项目上在做数据转移工作,需要把oracle转为mysql,在转换oracle储存过程中遇见这样一句sql,查的是序列号的下一个值 由于mysq只有递增列的概念没有oracle的sequence功能 ...

最新文章

  1. 关于Datastage资料库的一点小发现
  2. linux下yum源软件服务器的搭建与使用
  3. OpenSSL X509 Certificate反序列化漏洞(CVE-2015-3825)成因分析
  4. vmlinux 反汇编_ARM Linux内核驱动异常定位方法分析--反汇编方式
  5. promise简单封装ajax 完美嵌套多个ajax请求
  6. ibm服务器无显示器,IBM 2128彩色显示器,无论有无连机信号输入均黑屏
  7. 「2012-12-29」3x3手机锁屏矩阵图像的组合数量
  8. mysql4语法_4 MySQL 语法技巧
  9. android 下载网络图片并缓存
  10. [Java]一则自定义的XStream转换器,主要用于POJO XML反序列化为Map/List
  11. Matlab - Matlab 2016a 安装破解教程
  12. OpenCv学习篇——图像中值滤波算法
  13. 如何写一首悲伤的原创歌曲?
  14. 小米路由器3是基于linux,小米路由器3(MI-3)刷华硕固件不用虚拟机刷华硕固件无需虚拟机方法...
  15. 【计算机网络】数据链路层(超多图详析)
  16. Git本地仓库的文件夹不显示红色感叹号、绿色对号等图标
  17. 使用PowerGUI管理你的VMware ESX
  18. JAVA 实现 名单按姓氏笔画为序排列
  19. java公路赛_为什么Java公路车总被黑?
  20. PYTHON实现迅雷、FLASHGET、QQ旋风转真实链接、磁链转种子文件、迅雷快传链接抓取

热门文章

  1. WAMP 下 awstats 配置
  2. exit函数使用说明
  3. 主备 主从 主主模式
  4. class4 决策树之回归树案例
  5. 她都不知道我学过Python——观《你好,李焕英》 有感
  6. C#一个完整的Log4net使用实例
  7. mysql怎么删除函数节点_JS removeChild()方法:删除节点
  8. springboot的@ConditionalOnBean注解
  9. IPSec VPN的原理与配置
  10. VxWorks驱动开发:添加网卡驱动