標籤:
Oracle的序列
序列介紹
序列是Oracle提供的用於產生一系列唯一數位資料庫物件。使用序列可以實現自動產生主索引值。序列也可以在許多使用者並發環境中使用,為所有使用者產生不重複的順序數字,而且不需要任何額外的I/O開銷。
與視圖一樣,序列並不佔用實際的儲存空間,只是在資料字典中儲存它的定義資訊。使用者要在自己的模式中建立序列,必須具有CREATE SEQUECNCE系統許可權,如果要在其他模式中建立序列,則必須具有CREATE ANY SEQUENCE系統許可權。
建立序列的文法如下:
CREATE SEQUENCE sequence_name[START WITH start][INCREMENT BY increment][MINVALUE minvalue | NOMINVALUE][MAXVALUE maxvalue | NOMAXVALUE][CACHE cache | NOCACHE][CYCLE | NOCYCLE][ORDER | NOORDER]
建立序列
首先,以SYSDBA角色登入,賦予使用者建立序列許可權:
GRANT CREATE ANY SEQUENCE TO siege
然後建立序列:
CREATE SEQUENCE stu_seq START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCYCLE;
管理序列
使用序列,需要使用序列的兩個偽劣NEXTVAL和CURRVAL。修改序列使用ALTER SEQUENCE語句,除了序列的起始值之外,可以重新定義序列的任何子句和參數進行修改。如果要修改序列的起始值,則必須先刪除序列,然後再重新建立該序列。對序列進行修改後,在緩衝中的序列值將全部丟失,可以通過資料字典USER_SEQUENCE擷取序列的資訊。
查看序列資訊
SELECT * FROM user_sequences WHERE sequence_name=‘STU_SEQ‘
結果如下:
SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYCLE_FLAG ORDER_FLAG CACHE_SIZE LAST_NUMBERSTU_SEQ 1 1E28 1 N N 20 1
修改序列
ALTER SEQUENCE stu_seq MAXVALUE 9999 CACHE 9 CYCLE ORDER;
若要修改起始值,則只能刪除序列然後重新建立。
Oracle的序列