Oracle sequence序列的正確用法
我們大家都知道Oracle數(shù)據(jù)庫中沒有關于自增類型的相關字段,所以我們在通常情況下是需要定義一個關于Oracle sequence的來作為其自動增長的類型字段的相關數(shù)據(jù)。于是記錄了一些關于Oracle sequence的資料,已備查用!
Oracle中的序列(sequence)
1: 如何定義一個序列
僅向前的數(shù)字變量(和SQL中的自動編號有點像 identity(1,2) )
格式:
create sequence <序列名稱>
start with <起始數(shù)>
increment by <增長量>
[maxvalue 值]
[minvalue 值]
[cycle 當?shù)竭_***值的時候,將繼續(xù)從頭開始]
[Nocycle -- 一直累加,不循環(huán)]
[Cache ]
注意:
***次NEXTVAL返回的是初始值;隨后的NEXTVAL會自動增加你定義的INCREMENT BY值,然后返回增加后的值。CURRVAL 總是返回當前Oracle SEQUENCE的值,但是在***次NEXTVAL初始化之后才能使用CURRVAL,否則會出錯。一次NEXTVAL會增加一次SEQUENCE的值。
如果指定CACHE值,Oracle就可以預先在內存里面放置一些sequence,這樣存取的快些。cache里面的取完后,Oracle自動再取一組到cache。 使用cache或許會跳號, 比如數(shù)據(jù)庫突然不正常down掉(shutdown abort),cache中的Oracle sequence就會丟失. 所以可以在create sequence的時候用nocache防止這種情況。
- example:
- create sequence mySeq
- start with 1
- increment by 2
- maxvalue 40
- minvalue 1
- cycle
2:怎么去取序列數(shù)據(jù):
- currval--->curenvalue
- nextVal-->NextVlaue
- example:
- select mySeq.nextVal from dual
注意一點:currval只有當nextVal執(zhí)行一次以后才可以用.
在創(chuàng)建表的時候,可以使用序列.
具體例子:
create table 公司基本信息表
- (
- ComPID int,
- CompName varchar2(20)
- )
insert into 公司基本信息表 values(mySeq.nextVal,'AA')
【編輯推薦】