博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]Oracle/Altibase数据库中Sequence的用法
阅读量:6268 次
发布时间:2019-06-22

本文共 1452 字,大约阅读时间需要 4 分钟。

Oracle/Altibase数据库中Sequence的用法

 

  在Oracle/Altibase数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方。Mysql中则没有sequence对象

  1、create Sequence

  create SEQUENCE emp_sequence

  INCREMENT BY 1 —— 每次加几个

  START WITH 1 —— 从1开始计数

  NOMAXVALUE —— 不设置最大值

  NOCYCLE —— 一直累加,不循环

  CACHE 10;

  只要定义了emp_sequence,你就可以用使CURRVAL,NEXTVAL

  CURRVAL=返回 sequence的当前值

  NEXTVAL=增加sequence的值,然后返回 sequence 值

  例如:

  emp_sequence.CURRVAL

  emp_sequence.NEXTVAL

  可以使用sequence的地方:

  。 不包含子查询、snapshot、VIEW的 select 语句

  。insert语句的子查询中

  。NSERT语句的VALUES中

  。update 的 SET中

  可以看如下例子:

 

insert INTO emp VALUES  
(empseq.nextval, ’LEWIS’, ’CLERK’,7902, SYSDATE, 1200, NULL, 20);  
select empseq.currval FROM DUAL; 
  
需要注意的是:

 

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

  假如指定CACHE值,Oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,Oracle自动再取一组到cache. 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失。 所以可以在create sequence的时候用nocache防止这种情况。

  2、alter Sequence

  你需要有sequence的owner,或者拥有alter ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数。如果想要改变start值,必须 drop sequence 再 re-create .

  alter sequence示例: 

 

alter SEQUENCE emp_sequence  
INCREMENT BY 10  
MAXVALUE 10000  
CYCLE -- 到10000后从头开始  
NOCACHE ; 
  可以影响Sequence的初始化参数:

 

  SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。

  简单的drop Sequence

  drop SEQUENCE order_seq;

转载地址:http://btppa.baihongyu.com/

你可能感兴趣的文章
使用Xcode 查看objective-C的汇编代码
查看>>
Vue.js——60分钟快速入门
查看>>
设计模式 - 模板方法模式(template method pattern) 具体解释
查看>>
mysql判断一个字符串是否包含某子串 【转】
查看>>
a bad dream
查看>>
FD_CLOEXEC用法及原因_转
查看>>
element UI 的学习一,路由跳转
查看>>
RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
查看>>
Spring JavaBean属性值的注入方式( 属性注入, 特殊字符注入 <![CDATA[ 带有特殊字符的值 ]]> , 构造器注入 )...
查看>>
【Linux】Linux下统计当前文件夹下的文件个数、目录个数
查看>>
Hibernate_14_数据连接池的使用
查看>>
Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)
查看>>
jacky自问自答-java并发编程
查看>>
Struts2+JSON数据
查看>>
zTree实现单独选中根节点中第一个节点
查看>>
Cocos2D-x设计模式发掘之中的一个:单例模式
查看>>
很强大的HTML+CSS+JS面试题(附带答案)
查看>>
用树莓派实现RGB LED的颜色控制——C语言版本号
查看>>
VC2012编译CEF3-转
查看>>
java 自己定义异常,记录日志简单说明!留着以后真接复制
查看>>