序列是Oracle提供的用於產生一組等間隔整型數值的數據庫對象,能夠經過在插入語句中引用序列值來實現主鍵自增。sql
建立sequence:數據庫
Oracle用CREATE SEQUENCE命令建立序列,格式以下:緩存
CREATE SEQUENCE seq_name //seq_name是序列的名字。 [START WITH start] //用來制定序列的起始值。 [INCREMENT BY increment] //用來制定序列的增量,若是取負值則遞減。 [MINVALUE minvalue | NOMINVALUE] //指定序列是否有最小值。 [MAXVALUE maxvalue | NOMAXVALUE] //指定序列是否有最大值。 [CYCLE | NOCYCLE] //指定序列達到最大值或最小值後是否循環。 [CACHE cache | NOCACHE] //指定是否在緩存中保存預分配的序列值, 保存可提升獲取序列值的速度。 [ORDER | NOORDER] //該選項可保證序列值的惟一性和順序性, NOORDER選項只保證序列的惟一性。
使用sequence:spa
使用序列時,須要用到兩個僞列nextval和currval。其中nextval將返回序列的下一個值,而currval將返回序列的當前值。咱們利用序列向MASTER表插入記錄,實現主鍵自動標號的語句:code
insert into MASTER values(master_seq.nextval,'1k1','1k1',1); insert into MASTER values(master_seq.nextval,'2k2','2k2',2); select master_seq.currval from MASTER; select master_seq.nextval from MASTER;
修改和刪除sequence:orm
經過alter sequence語句對序列進行修改,能夠修改序列起始值之外的全部參數。若是要修改序列起始值,則必須先刪除序列,再建立新的序列。對象
刪除序列:rem
drop sequence;it
產生裂縫的狀況:ast
1. 回滾
2. 系統異常
3.多個表同時使用同一序列
查詢用戶的全部序列:
select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='用戶名';
注意事項:
1. 必須以管理員身份登陸;
2. sequence_owner必須爲大寫,無論你的用戶名是否大寫。只有大寫才能識別。