Oracle數據庫Sequence創建與使用

在Oracle中sequence就是序號,每次提取完都會自動增加,步幅固定它與表沒有直接關係


首先查詢當前數據庫中的sequence

查詢當前用戶的:select from user_sequences

查詢所有用戶的:select from all_sequences

開始創建sequence:

創建sequence語句:

CREATE SEQUENCE seq_name -- seq_name爲計數器的名字,自定;
INCREMENT 
BY 1           -- 每次加幅度:1,2,3,....;
START WITH 1             -- 起始序號,以實際生產情況而定;
NOMAXvalue               -- 不設置最大值,或設定最大值: maxvalue 9999;
NOCYCLE                  -- 一直累加,不循環; 或循環使用 cycle ;
CACHE 10                 --設置緩存序列個數,如果系統down掉了或者其它情況將會導致序列不連續,也可以設置爲---------NOCACHE

修改sequence:

Alter sequence 可以修改sequence(除起始值)步幅、最大/最小值、是否循環、緩存個數 這些參數;
例:Alter Sequence seq_name  
Increment  By  2
Maxvalue 9999

使用sequence:

sequence創建完成後,就可以使用sequence的兩個參數 currval、nextval;

currval查詢sequence的當前值:select seq_name.currval from dual;

nextval查詢sequence下一個值:select seq_name.nextval from dual;


刪除sequence:

drop sequence seq_name;



1、currval是取當前值,所以一個新的計數器sequence必須先使用nextval後纔可以使用currval否則會報錯;
2、nextval是取下一個值,但第一次使用時取的是初始值,之後正常取下一個,且如果一個語句(不同的子句)裏面有多個nextval,它們的取值可能是不同的;
3、如果指定CACHE值,ORACLE就可以預先在內存裏面放置一些sequence,cache裏面的取完後,oracle自動再取一組到cache。
優點:存取的快些,尤其是併發訪問時。
缺點:使用cache或許會跳號, 比如數據庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失. 所以可以在創建的時候用nocache防止這種情況

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章