oracle设置主键自动增长.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oracle设置主键自动增长

oracle设置主键自动增长 select * from (select e.*,ROWNUM rn from (select * from emp order by empno) e) where rn between 1 and 10; select * from (select e.*,ROWNUM rn from (select * from emp order by empno) e where ROWNUM=10) where rn=1; 首先,你要有一张表!   CREATE TABLE example(    ID Number(4) NOT NULL PRIMARY KEY,    NAME VARCHAR(25),    PHONE VARCHAR(10),    ADDRESS VARCHAR(50) ); 然后,你需要一个自定义的sequence   CREATE SEQUENCE emp_sequence   INCREMENT BY 1 -- 每次加几个   START WITH 1 -- 从1开始计数   NOMAXVALUE -- 不设置最大值   NOCYCLE -- 一直累加,不循环   NOCACHE -- 不建缓冲区   以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,假如你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下假如你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但假如遭遇意外情况如当机了或Oracle死了,则下次取出的seq值将和上次的不连贯.(假如连不连贯无所谓建议用cache,因为时间就是金钱呀!跑题了!)   书接上文,你只有了表和序列还不够,还需要一个触发器来执行它!代码如下:   CREATE TRIGGER 触发器名称 BEFORE   INSERT ON example FOR EACH ROW WHEN (new.id is null)   begin   select emp_sequence.nextval into: new.id from dual;   end;   打完收工!下面你就试试插入数据吧!   INSERT INTO example(Name,phone,address) Values(CaoHeibei);   =============================================================   ORACLE SEQUENCE的简单介绍(自增长字段)- -   from:/BBS/user_file/2002-04-10/1018438701.htm   在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。   1、CreateSequence   你首先要有CREATESEQUENCE或者CREATEANYSEQUENCE权限,   CREATESEQUENCEemp_sequence   INCREMENTBY1--每次加几个   STARTWITH1--从1开始计数   NOMAXVALUE--不设置最大值   NOCYCLE--一直累加,不循环   CACHE10;   一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL   CURRVAL=返回sequence的当前值   NEXTVAL=增加sequence的值,然后返回sequence值   比如:   emp_sequence.CURRVAL   emp_sequence.NEXTVAL   可以使用sequence的地方:   -不包含子查询、snapshot、VIEW的SELECT语句   -INSERT语句的子查询中   -NSERT语句的VALUES中   -UPDATE的SET中   可以看如下例子:   INSERTINTOempVALUES   (empseq.nextval,LEWIS,CLERK,7902,SYSDATE,1200,NULL,20);   SELECTempseq.currvalFROMDUAL;   但是要注重的是:   -第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENTBY值,然后返回增加后的值。CURRVAL总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否

文档评论(0)

htfyzc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档