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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM