oracle nextval mysql_mysql中实现类似oracle中的nextval函数
我们知道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函数相关推荐
- mysql execute immediate_PostgreSQL中function中实现类似Oracle的execute immediate的功能
PostgreSQL中function中实现类似Oracle的execute immediate和dbms_output_putline的功能 首先需要说明的是,PostgreSQL中没有像Oracl ...
- vue中使用类似html中a标签的锚链接,实现点击定位到当前页面的某个位置
在vue中实现点击文字,定位到当前页面的某个位置,具体实现效果如下图所示: 主要实现方式为: <div @click="toJump1">定位1</div> ...
- oracle decode sqlserver,sqlserver 的类似oracle的decode函数
原来系统是在oracle上开发的,后来客户一声令下,就转移到sqlserver了.在写存储过程的时候,发现decode方法没有,可以用case when来替代.但是之前项目会议上领导又提出,客户说有可 ...
- mysql nextval同步锁_mysql中实现类似oracle中的nextval函数
我们知道mysql中是不支持sequence的,一般是建表的时间使这个字段自增. 如 create table table_name(id int auto_increment prima ...
- web.py中实现类似Django中的ORM的查询效果
Django中的对象查询 Django框架自带了ORM,实现了一些比较强大而且方便的查询功能,这些功能和表无关.比如下面这个例子: class Question(models.Model):quest ...
- 20、在Linux中实现类似windows中获取配置文件的函数GetProfileString
在读取配置文件时,window环境下,有GetProfileString函数,而Linux下则没有.我写了一个能实现其功能的函数,如下所示,基本思想是捉住配置文件中用"[]"标记的 ...
- mysql 类似 oracle connect by,mysql中实现相仿oracle的SYS_CONNECT_BY_PATH功能
mysql中实现类似oracle的SYS_CONNECT_BY_PATH功能 oracle中的SYS_CONNECT_BY_PATH函数为开发带来了便利,mysql中如何实现类的功能呢? DELIMI ...
- mysql sys_connect_by_path_mysql中实现相仿oracle的SYS_CONNECT_BY_PATH功能
mysql中实现类似oracle的SYS_CONNECT_BY_PATH功能 oracle中的SYS_CONNECT_BY_PATH函数为开发带来了便利,mysql中如何实现类的功能呢? DELIMI ...
- sequence oracle mysql,oracle sequence转mysql(mysql实现oracle的sequence功能)
最近项目上在做数据转移工作,需要把oracle转为mysql,在转换oracle储存过程中遇见这样一句sql,查的是序列号的下一个值 由于mysq只有递增列的概念没有oracle的sequence功能 ...
最新文章
- 关于Datastage资料库的一点小发现
- linux下yum源软件服务器的搭建与使用
- OpenSSL X509 Certificate反序列化漏洞(CVE-2015-3825)成因分析
- vmlinux 反汇编_ARM Linux内核驱动异常定位方法分析--反汇编方式
- promise简单封装ajax 完美嵌套多个ajax请求
- ibm服务器无显示器,IBM 2128彩色显示器,无论有无连机信号输入均黑屏
- 「2012-12-29」3x3手机锁屏矩阵图像的组合数量
- mysql4语法_4 MySQL 语法技巧
- android 下载网络图片并缓存
- [Java]一则自定义的XStream转换器,主要用于POJO XML反序列化为Map/List
- Matlab - Matlab 2016a 安装破解教程
- OpenCv学习篇——图像中值滤波算法
- 如何写一首悲伤的原创歌曲?
- 小米路由器3是基于linux,小米路由器3(MI-3)刷华硕固件不用虚拟机刷华硕固件无需虚拟机方法...
- 【计算机网络】数据链路层(超多图详析)
- Git本地仓库的文件夹不显示红色感叹号、绿色对号等图标
- 使用PowerGUI管理你的VMware ESX
- JAVA 实现 名单按姓氏笔画为序排列
- java公路赛_为什么Java公路车总被黑?
- PYTHON实现迅雷、FLASHGET、QQ旋风转真实链接、磁链转种子文件、迅雷快传链接抓取