Oracle序列的創建和使用

1.創建序列

語法:
    create sequence 序列名 [可選參數]
(序列名常定義爲‘seq_XXX’的形式,創建序列不能使用replace)
可選參數說明:
    increment by:序列每次增加的值,負數表示遞減,缺省值爲1;
    start with:序列的初始值,缺省值爲1;
    maxvalue:序列可生成的最大值,缺省值爲nomaxvalue,即不設置最大值;系統能產生的最大值爲10的27次方;
    minvalue:序列可生成的最小值,缺省值爲nominvalue,即不設置最小值;
    cycle:定義當序列達到最大/小值後是否循環,缺省值爲不循環;nocycle:不循環;cycle:循環;如果不使用循環達到限制值後繼續產生新值就會出錯;使用循環達到最大值後的下一個值爲1,和start with設置的值無關,遞增還是increment by設置的值;
    cache:定義緩存序列的個數,缺省值爲20,nocache表示不設置緩存;使用緩存可以提高序列的性能,但數據庫出錯時會造成數據丟失使序列不連續;
 
例:創建一個循環不使用cache的序列

create sequence REQ_NO
 
increment by 1 
 
start with 1 
 
maxvalue 99999 
 
cycle 
 
nocache; 

2.序列的使用

語法:
序列名.[currval/nextval]
currval:表示當前值,新序列若沒使用過nextval不能直接使用當前值,會報錯;
nextval:表示序列的下一個值
例:查詢序列的值
select seq_name.nextval from dual; --序列seq_name的下一個值
例:SQL語句中使用序列
insert into 表名 value(seq_name.currval)

 

3.刪除修改序列

語法:
drop sequence [用戶名.]序列名
alert sequence [用戶名.]序列名 [可選參數]
例:刪除序列
dorp sequence seq_name;
例:修改序列
alert sequence seq_name
increment by 10
nomaxvalue
nocycle
cache 10
(修改序列只能修改這幾個值,不能修改初始值)

 

4.查看所有序列

查看當前用戶下的所有序列:
select * from user_sequences;
查看所有用戶下的所有序列:
select * from all_sequences;
還有一個
select * from dba_sequences;

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