一、Oracle添加表序列

CREATE SEQUENCE name -- 序列名

INCREMENT BY -- 每次加几个
START WITH -- 从几开始计数
MINVALUE --- 最小值
MAXVALUE --- 最大值
NOCACHE --- 没有缓存
CACHE --- 缓存 默认为20,最少为2个
NOCYCLE --- 一直累加,不循环

例如:

  1. drop SEQUENCE FILE_SEQ;
  2. CREATE SEQUENCE FILE_SEQ
  3. INCREMENT BY
  4. START WITH
  5. MINVALUE
  6. MAXVALUE
  7. NOCYCLE
  8. CACHE ;

生成后如图:

获取当前序列

  1. select 序列名.currval from dual; //获取序列的当前值,这个值是可变的。

需要注意的是:

数据库连接成功后,初次执行这句话,会报异常,不能用。

如果不是你的语句单词拼写错误,就是因为没有先执行下边这句sql,

获取下一个序列

  1. select 序列名.nextval from dual 

二、MySql添加表序列

第一步:创建Sequence管理表 sequence

  1. DROP TABLE IF EXISTS sequence;
  2. CREATE TABLE sequence (
  3. name VARCHAR() NOT NULL,
  4. current_value INT NOT NULL,
  5. increment INT NOT NULL DEFAULT ,
  6. PRIMARY KEY (name)
  7. ) ENGINE=InnoDB;

第二步:创建取当前值的函数 currval

  1. DROP FUNCTION IF EXISTS currval;
  2. DELIMITER $
  3. CREATE FUNCTION currval (seq_name VARCHAR())
  4. RETURNS INTEGER
  5. LANGUAGE SQL
  6. DETERMINISTIC
  7. CONTAINS SQL
  8. SQL SECURITY DEFINER
  9. COMMENT ''
  10. BEGIN
  11. DECLARE value INTEGER;
  12. SET value = ;
  13. SELECT current_value INTO value
  14. FROM sequence
  15. WHERE name = seq_name;
  16. RETURN value;
  17. END
  18. $
  19. DELIMITER ;

第三步:创建取下一个值的函数 nextval

  1. DROP FUNCTION IF EXISTS nextval;
  2. DELIMITER $
  3. CREATE FUNCTION nextval (seq_name VARCHAR())
  4. RETURNS INTEGER
  5. LANGUAGE SQL
  6. DETERMINISTIC
  7. CONTAINS SQL
  8. SQL SECURITY DEFINER
  9. COMMENT ''
  10. BEGIN
  11. UPDATE sequence
  12. SET current_value = current_value + increment
  13. WHERE name = seq_name;
  14. RETURN currval(seq_name);
  15. END
  16. $
  17. DELIMITER ;

第四步:创建更新当前值的函数 setval

  1. DROP FUNCTION IF EXISTS setval;
  2. DELIMITER $
  3. CREATE FUNCTION setval (seq_name VARCHAR(), value INTEGER)
  4. RETURNS INTEGER
  5. LANGUAGE SQL
  6. DETERMINISTIC
  7. CONTAINS SQL
  8. SQL SECURITY DEFINER
  9. COMMENT ''
  10. BEGIN
  11. UPDATE sequence
  12. SET current_value = value
  13. WHERE name = seq_name;
  14. RETURN currval(seq_name);
  15. END
  16. $
  17. DELIMITER ;

备注:以上sql中DELIMITER与后面的分号有一个空格或者执行会报错 。

测试:

  1. INSERT INTO sequence VALUES ('TestSeq', , );
  2. ----添加一个sequence名称和初始值,以及自增幅度 添加一个名为TestSeq 的自增序列
  3.  
  4. SELECT SETVAL('TestSeq', );
  5. ---设置指定sequence的初始值 这里设置TestSeq 的初始值为10
  6.  
  7. SELECT CURRVAL('TestSeq');
  8. --查询指定sequence的当前值 这里是获取TestSeq当前值
  9.  
  10. SELECT NEXTVAL('TestSeq');
  11. --查询指定sequence的下一个值 这里是获取TestSeq下一个值

Oracle与Mysql操作表序列的更多相关文章

  1. Oracle与MySQL的区别

    1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大访 ...

  2. oracle转mysql总结(转)

    ares-sdk初始开发测试使用的是oracle数据库,由于宁波通商的特殊需要,必须把数据库环境从oracle转向mysql. 现对转换过程中出现的问题及经验总结如下: 主键生成策略 创建一个专门记录 ...

  3. oracle 转 mysql 最新有效法(转)

    关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...

  4. 数据库笔试面试题库(Oracle、MySQL等)

    数据库笔试面试题库(Oracle.MySQL等) 版权声明:版权所有,欢迎分享本文,转载请保留出处,否则追究法律责任,谢谢合作. 注:本文将持续更新,可关注作者微信公众号以便获得最新笔试面试资料. ⊙ ...

  5. oracle转mysql总结

    oracle转mysql总结 ares-sdk初始开发测试使用的是oracle数据库,由于宁波通商的特殊需要,必须把数据库环境从oracle转向mysql. 现对转换过程中出现的问题及经验总结如下: ...

  6. oracle 转 mysql 最新有效法

    关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...

  7. Oracle 和 MySQL的区别(不完整)

    1. Oracle对单双引号要求的很死,一般不准用双引号,不然会报错.MySQL 单双引号都可以. 2. 事务提交方式:Oracle 默认手动提交,MySQL 默认自动提交. 3. 分页:MySQL有 ...

  8. mybatis中oracle转mysql

    刚来公司实习,遇到的第一个任务就是这个,简单记录一下思路过程.人菜的很,没啥参考价值. 测试时: 将现有的oracle库转为mysql: 用的Navicat自带数据传输功能,简单粗暴 出现的问题: 1 ...

  9. 数据库Oracle和MySQL 的不同

    实例区别: MySQL是轻量型数据库,开源免费.Oracle收费,这个不是重点,,重点是它贵. MySQL一个实例可以操作多个库,而Oracle一个实例只能对应一个库. MySQL安装只有300多兆, ...

随机推荐

  1. how to get a controller instance in another controller

    https://stackoverflow.com/questions/16870413/how-to-call-another-controller-action-from-a-controller ...

  2. [POI2009]Lyz

    Description 初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了xi个ri号脚的人.xi为负,则代表走了这么多人 ...

  3. DataStage系列教程 (Pivot_Enterprise 行列转换)

    有人提到Pivot_Enterprise这个组件,之前没有用过,今天捣腾了会,写下来供以后参考,如果有什么不对的,还请多指出,谢谢! Pivot_Enterprise主要用来进行行列转换. 1 示例 ...

  4. Scala的两种变量

    Scala有两种变量,val和var.val类似于Java的final变量,一旦初始化了,就不能再赋值了.var如同Java中的非final变量,可以在生命周期内被多次赋值.

  5. Java中sleep()与wait()的区别

    第一种解释: 功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩.       还有用法的上的不同是:sleep(milliseconds)可以用 ...

  6. iOS CoreData版本升级和数据库迁移

    app中使用了CoreData,并且在下一个版本中有实体变动,比如实体新增字段.修改字段等改动, 那么app在覆盖安装时就要进行数据库迁移, 否则app就会crash. 那如何实现数据库迁移呢?大概需 ...

  7. 利用大数据技术处理海量GPS数据

    我秀中国物联网地图服务平台目前接入的监控车辆近百万辆,每天采集GPS数据7亿多条,产生日志文件70GB,使用传统的数据处理方式非常耗时. 比如,仅仅对GPS做一些简单的统计分析,程序就需要几个小时才能 ...

  8. yii2:redis调用

    参照手册,调用redis,报错,真坑: Yii::$app->redis 后改改用: Yii::getRedis();

  9. 在windows x64上部署使用Redis

    一.下载Redis 下载地址:https://github.com/MSOpenTech/redis/releases 二.安装Redis 将下载文件解压到D:\redis 后,可见: 三.启动Red ...

  10. 转 IOS动态类型isKindOfClass, isMemberOfClass

    对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断对象类型 -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) is ...