oracle经验之谈

18、序列

2018-10-22  本文已影响0人  小母牛不生产奶

创建序列

Create sequence myseq

Start with 1 

Increment by 1 

Order

cache 20

Nocycle;


NextVal,CurrVal

Select myseq.nextval from dual;

Select myseq.currval from dual; (必须先有 nextval,才能有currval) 

Insert into table1 values(myseq.nextval) 这时候已经是 2 了


Cycle,Cache

而用了 nocycle,就可以确保当该序列用于多张表的时候,ID 是唯一的 

用 cycle 时,用法如下:

 create sequence myseq2

start with 1

increment by 1

cycle maxvalue 3

nocache ;

这样到 3 之后,要会重新从 1 开始 


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

不能改变当前值,但是可以改变增量Alter sequence myseq increment by 3; 

上一篇下一篇

猜你喜欢

热点阅读