阅 读 文 章

让我简单介绍一下Oracle sequence

[来源:网上转载 (http://exam.21tx.com) | 作者:网友(网络收集) | 时间:2007-08-25 | 浏览:人次 ]

  在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
  
  1、Create Sequence
  
  你首先要有CREATE SEQUENCE或者CREATE ANY 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; 

  

上一篇: Oracle数据库常见问题诊断方法(一)
下一篇: Oracle中的用户创建和权限的分配

论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 介绍 简单 sequence SEQUENCE NEXTVAL 可以 cache 增加

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.