一、概述

sequence是序列号的意思,每次取的时候它会自动增加(自增)。sequence与表没有从属关系,与表一样属于用户。

二、主要内容
1、Create Sequence语法
--首先用户要有CREATE SEQUENCE或者CREATE ANY SEQUENCE的权限。
CREATE SEQUENCE seqname [ INCREMENT increment ]
    [ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
    [ START start ] [ CACHE cache ] [ CYCLE ][order]

注释: seqname: 序列名

increment : 递增数 ,例如increment by 1  就是递增1;increate by -1 就是递减1

minvalue:  序列最小值

maxvalue : 序列最大值,最大为27个9

start:  序列从哪个值开始,先去一部分序列值存入缓存,可以提高性能。缺点是发生系统故障后可能导致序列号不连续,可以设置为nocache保证不会发生序列跳动。默认值是20。

cycle:循环,到达最大值后,从最小值重新开始生成序列号,可以设置为nocycle表示累加不循环。

order: 保证按顺序申请。默认是noorder。ORDER和NOORDER的区别表现在并行服务和独占服务之间 打个比方:双CPU对同一个oracle DB 中的 ABC sequence申请序号时, 这时就有两个请求A和B,假设A请求在前B在后, 现在ABC序列中的值为9. 如果添加了ORDER选项,那么一定是A请求到9, B请求到10.但如果没有添加此选项,则有可能B请求到9, A请求到10.order一般用于时间戳类型,对于主键则用处不大。

例子:
     CREATE SEQUENCE seq
     minvalue 1        --最小值
     INCREMENT BY 1    --递增1
     START WITH 1      --从1开始
     NOMAXvalue        --无最大值
     NOCYCLE           --不循环
     CACHE 100;        --缓存100个序列号

三:下面介绍一下关于sequence 的生成,修改,删除等常用的操作:

1. 创建 Sequence

使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限):

CREATE SEQUENCE test_sequence INCREMENT BY 1 -- 每次加的个数据 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10 ; [注意] 如果设置了CACHE值,ORACLE将在内存里预先放置一些sequence,以使存取速度更快。cache里面的取完后,oracle自动再取一组到cache。 但是,使用cache可能会跳号, 当遇到数据库突然异常down掉(shutdown abort),cache中的sequence就会丢失. 因此,推荐在create sequence的时候使用 nocache 选项。

2. 使用 sequence:

sequence.CURRVAL -- 返回 sequence的当前值 sequence.NEXTVAL -- 增加sequence的值,然后返回 sequence 值

[注意] 第一次NEXTVAL返回的是初始值; 随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。

CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。 一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。

sequence 存储在数据字典中,存储于user_sequences表 LAST_NUMBER 为最终序列号,也就是sequence游标当前所在的位置。

//get sequence last_number

SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME

// NEXTVAL 使游标指向下一位(增一或减一)

SELECT SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下一位游标的值

3. 修改 Sequence

用户必须拥有ALTER ANY SEQUENCE 权限才能修改sequence. 可以alter除start至以外的所有sequence参数. 如果想要改变start值,必须 drop sequence 再 re-create.

命令格式如下:

ALTER SEQUENCE test_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后从头开始 NOCACHE ;

4. 删除 Sequence DROP SEQUENCE order_seq;

数据库中的sequences相关推荐

  1. postgresql数据库中多个Schemas互相访问

    背景: 用postgresql创建了一个数据库userDataBase,在这个数据库中创建了Schemas userA,Schemas userB,Schemas userC三个Schemas之后,给 ...

  2. 使用PHP从Access数据库中提取对象,第2部分

    In the first part of this series we learned how to extract packaged objects from a legacy Access dat ...

  3. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  4. java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...

    展开全部 //没看到有人回e68a843231313335323631343130323136353331333365646233答你,我还没学到框架,不知道那个是不是可以很便捷操作你说的这样过程 / ...

  5. 知识图:从图和数据库中获取知识

    知识图:从图和数据库中获取知识 知识图到底是什么,以及关于它们的所有炒作是什么?如果想成为世界各地的Airbnbs,Amazon,Google和LinkedIn,那么学会区分真实的炒作,定义不同类型的 ...

  6. 用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  7. bd2和mysql语法区别,经验:在MySQL数据库中,这4种方式可以避免重复的插入数据!...

    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下 ...

  8. jdbc mysql查询显示图片_JDBC【向数据库中存入读取图片】

    JDBC-向数据库中存入读取图片 注:此代码依赖自定义的数据库连接工具类 1.向数据库存入一张照片 import java.io.File; import java.io.FileInputStrea ...

  9. mysql数据库中nchar_MySQL数据库中CHAR与VARCHAR之争

    在MySQL数据库中,用的最多的字符型数据类型就是Varchar和Char..这两种数据类型虽然都是用来存放字符型数据,但是无论从结构还是从数 据的保存方式来看,两者相差很大.而且其具体的实现方式,还 ...

最新文章

  1. 信号系统的一些基本概念
  2. 不疯狂的外星人,已疯狂的资本
  3. vs中项目解决方案和项目的关系
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的校友录管理系统
  5. 房子值500万租金仅3500元,卖房拿利息和出租哪个合算?
  6. 关于在openstack执行nova get-vnc-console命令,无法得到vnc url并提示服务器超时的问题描述...
  7. Windows任务管理器
  8. 【Unity3D】初学加密技巧(反破解)
  9. 玩转树莓派——游戏主机模拟器
  10. 银联网关支付,退款java实现
  11. 电线的粗细与电流的大小怎么算?电流的大小与电器的功率有什么关系? 如何根据电流的大小选择铜质电线的粗细...
  12. raw的服务器镜像是什么系统,如何将Ceph Raw格式镜像转换成Qcow2格式并上传云平台创建云主机...
  13. 计算机远程桌面连接有几种方式,远程桌面连接的2种方法
  14. Spatial Dropout
  15. 【python】numpy库np.percentile详解
  16. matlab hanning和hann,哪位大侠能告知——为什么在MATLAB2012中不能调研(汉宁)窗函...
  17. redis入门(三)
  18. 学生成绩管理系统E-R图
  19. MOSS 学习的比较好的网
  20. 前端时间选择器实现(包括两种形式,1、只有年月日 2、包含年月日:时分秒)

热门文章

  1. Linux dhclient命令使用
  2. 1、matlab页面和基本操作
  3. web开发技术,vue.js前端开发实战黑马程序员
  4. 阅读笔记:养女儿的四大要点!
  5. 翅膀里面是个r_两个翅膀中间一个字母R,是什么车?
  6. Problem H: 小学生算术
  7. 全球及中国甲基正丙基酮行业行业专项调查与投资战略研究报告2022-2028年
  8. python开发区_最新章节测试答案2020智慧树知道Python程序设计
  9. php5.4 xdebug,Xdebug—php调试工具
  10. c 语言中 %d,%lu等区别