Oracle与Mysql操作表序列
一、Oracle添加表序列
CREATE SEQUENCE name -- 序列名
INCREMENT BY -- 每次加几个
START WITH -- 从几开始计数
MINVALUE --- 最小值
MAXVALUE --- 最大值
NOCACHE --- 没有缓存
CACHE --- 缓存 默认为20,最少为2个
NOCYCLE --- 一直累加,不循环
例如:
- drop SEQUENCE FILE_SEQ;
- CREATE SEQUENCE FILE_SEQ
- INCREMENT BY
- START WITH
- MINVALUE
- MAXVALUE
- NOCYCLE
- CACHE ;
生成后如图:
获取当前序列
- select 序列名.currval from dual; //获取序列的当前值,这个值是可变的。
需要注意的是:
数据库连接成功后,初次执行这句话,会报异常,不能用。
如果不是你的语句单词拼写错误,就是因为没有先执行下边这句sql,
获取下一个序列
- select 序列名.nextval from dual
二、MySql添加表序列
第一步:创建Sequence管理表 sequence
- DROP TABLE IF EXISTS sequence;
- CREATE TABLE sequence (
- name VARCHAR() NOT NULL,
- current_value INT NOT NULL,
- increment INT NOT NULL DEFAULT ,
- PRIMARY KEY (name)
- ) ENGINE=InnoDB;
第二步:创建取当前值的函数 currval
- DROP FUNCTION IF EXISTS currval;
- DELIMITER $
- CREATE FUNCTION currval (seq_name VARCHAR())
- RETURNS INTEGER
- LANGUAGE SQL
- DETERMINISTIC
- CONTAINS SQL
- SQL SECURITY DEFINER
- COMMENT ''
- BEGIN
- DECLARE value INTEGER;
- SET value = ;
- SELECT current_value INTO value
- FROM sequence
- WHERE name = seq_name;
- RETURN value;
- END
- $
- DELIMITER ;
第三步:创建取下一个值的函数 nextval
- DROP FUNCTION IF EXISTS nextval;
- DELIMITER $
- CREATE FUNCTION nextval (seq_name VARCHAR())
- RETURNS INTEGER
- LANGUAGE SQL
- DETERMINISTIC
- CONTAINS SQL
- SQL SECURITY DEFINER
- COMMENT ''
- BEGIN
- UPDATE sequence
- SET current_value = current_value + increment
- WHERE name = seq_name;
- RETURN currval(seq_name);
- END
- $
- DELIMITER ;
第四步:创建更新当前值的函数 setval
- DROP FUNCTION IF EXISTS setval;
- DELIMITER $
- CREATE FUNCTION setval (seq_name VARCHAR(), value INTEGER)
- RETURNS INTEGER
- LANGUAGE SQL
- DETERMINISTIC
- CONTAINS SQL
- SQL SECURITY DEFINER
- COMMENT ''
- BEGIN
- UPDATE sequence
- SET current_value = value
- WHERE name = seq_name;
- RETURN currval(seq_name);
- END
- $
- DELIMITER ;
备注:以上sql中DELIMITER与后面的分号有一个空格或者执行会报错 。
测试:
- INSERT INTO sequence VALUES ('TestSeq', , );
- ----添加一个sequence名称和初始值,以及自增幅度 添加一个名为TestSeq 的自增序列
- SELECT SETVAL('TestSeq', );
- ---设置指定sequence的初始值 这里设置TestSeq 的初始值为10
- SELECT CURRVAL('TestSeq');
- --查询指定sequence的当前值 这里是获取TestSeq当前值
- SELECT NEXTVAL('TestSeq');
- --查询指定sequence的下一个值 这里是获取TestSeq下一个值
Oracle与Mysql操作表序列的更多相关文章
- Oracle与MySQL的区别
1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大访 ...
- oracle转mysql总结(转)
ares-sdk初始开发测试使用的是oracle数据库,由于宁波通商的特殊需要,必须把数据库环境从oracle转向mysql. 现对转换过程中出现的问题及经验总结如下: 主键生成策略 创建一个专门记录 ...
- oracle 转 mysql 最新有效法(转)
关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...
- 数据库笔试面试题库(Oracle、MySQL等)
数据库笔试面试题库(Oracle.MySQL等) 版权声明:版权所有,欢迎分享本文,转载请保留出处,否则追究法律责任,谢谢合作. 注:本文将持续更新,可关注作者微信公众号以便获得最新笔试面试资料. ⊙ ...
- oracle转mysql总结
oracle转mysql总结 ares-sdk初始开发测试使用的是oracle数据库,由于宁波通商的特殊需要,必须把数据库环境从oracle转向mysql. 现对转换过程中出现的问题及经验总结如下: ...
- oracle 转 mysql 最新有效法
关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...
- Oracle 和 MySQL的区别(不完整)
1. Oracle对单双引号要求的很死,一般不准用双引号,不然会报错.MySQL 单双引号都可以. 2. 事务提交方式:Oracle 默认手动提交,MySQL 默认自动提交. 3. 分页:MySQL有 ...
- mybatis中oracle转mysql
刚来公司实习,遇到的第一个任务就是这个,简单记录一下思路过程.人菜的很,没啥参考价值. 测试时: 将现有的oracle库转为mysql: 用的Navicat自带数据传输功能,简单粗暴 出现的问题: 1 ...
- 数据库Oracle和MySQL 的不同
实例区别: MySQL是轻量型数据库,开源免费.Oracle收费,这个不是重点,,重点是它贵. MySQL一个实例可以操作多个库,而Oracle一个实例只能对应一个库. MySQL安装只有300多兆, ...
随机推荐
- how to get a controller instance in another controller
https://stackoverflow.com/questions/16870413/how-to-call-another-controller-action-from-a-controller ...
- [POI2009]Lyz
Description 初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了xi个ri号脚的人.xi为负,则代表走了这么多人 ...
- DataStage系列教程 (Pivot_Enterprise 行列转换)
有人提到Pivot_Enterprise这个组件,之前没有用过,今天捣腾了会,写下来供以后参考,如果有什么不对的,还请多指出,谢谢! Pivot_Enterprise主要用来进行行列转换. 1 示例 ...
- Scala的两种变量
Scala有两种变量,val和var.val类似于Java的final变量,一旦初始化了,就不能再赋值了.var如同Java中的非final变量,可以在生命周期内被多次赋值.
- Java中sleep()与wait()的区别
第一种解释: 功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩. 还有用法的上的不同是:sleep(milliseconds)可以用 ...
- iOS CoreData版本升级和数据库迁移
app中使用了CoreData,并且在下一个版本中有实体变动,比如实体新增字段.修改字段等改动, 那么app在覆盖安装时就要进行数据库迁移, 否则app就会crash. 那如何实现数据库迁移呢?大概需 ...
- 利用大数据技术处理海量GPS数据
我秀中国物联网地图服务平台目前接入的监控车辆近百万辆,每天采集GPS数据7亿多条,产生日志文件70GB,使用传统的数据处理方式非常耗时. 比如,仅仅对GPS做一些简单的统计分析,程序就需要几个小时才能 ...
- yii2:redis调用
参照手册,调用redis,报错,真坑: Yii::$app->redis 后改改用: Yii::getRedis();
- 在windows x64上部署使用Redis
一.下载Redis 下载地址:https://github.com/MSOpenTech/redis/releases 二.安装Redis 将下载文件解压到D:\redis 后,可见: 三.启动Red ...
- 转 IOS动态类型isKindOfClass, isMemberOfClass
对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断对象类型 -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) is ...