Oracle中的有序自增字段——序列sequence

序列是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必須爲大寫,無論你的用戶名是否大寫。只有大寫才能識別。

相關文章
相關標籤/搜索