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 seq_userid 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;