當前位置:成語大全網 - 新華字典 - Oracle中如何創建使用SEQUENCES

Oracle中如何創建使用SEQUENCES

Oracle提供了sequence對象,由系統提供自增長的序列號,通常用於生成數據庫數據記錄的自增長主鍵或序號的地方.

Oracle提供了sequence對象,由系統提供自增長的序列號,通常用於生成數據庫數據記錄的自增長主鍵或序號的地方.

下面介紹壹下關於sequence 的生成,修改,刪除等常用的操作:

1. 創建 Sequence

使用如下命令新建sequence(用戶需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE權限):

CREATE SEQUENCE test_sequence

INCREMENT BY 1-- 每次加的個數據

START WITH 1-- 從1開始計數

NOMAXVALUE -- 不設置最大值

NOCYCLE -- 壹直累加,不循環

CACHE 10 ;

[註意]

如果設置了CACHE值,ORACLE將在內存裏預先放置壹些sequence,以使存取速度更快。cache裏面的取完後,oracle自動再取壹組到cache。 但是,使用cache可能會跳號, 當遇到數據庫突然異常down掉(shutdown abort),cache中的sequence就會丟失.

因此,推薦在create sequence的時候使用 nocache 選項。

2. 使用 sequence:

sequence.CURRVAL -- 返回 sequence的當前值

sequence.NEXTVAL -- 增加sequence的值,然後返回 sequence 值

[註意]

第壹次NEXTVAL返回的是初始值;

隨後的NEXTVAL會自動增加妳定義的INCREMENT BY值,然後返回增加後的值。

CURRVAL 總是返回當前SEQUENCE的值,但是在第壹次NEXTVAL初始化之後才能使用CURRVAL,,否則會出錯。

壹次NEXTVAL會增加壹次 SEQUENCE的值,所以如果妳在同壹個語句裏面使用多個NEXTVAL,其值就是不壹樣的。

sequence 存儲在數據字典中,存儲於user_sequences表

LAST_NUMBER 為最終序列號,也就是sequence遊標當前所在的位置。

//get sequence last_number

SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME

// NEXTVAL 使遊標指向下壹位(增壹或減壹)

SELECT SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下壹位遊標的值

3. 修改 Sequence

用戶必須擁有ALTER ANY SEQUENCE 權限才能修改sequence. 可以alter除start至以外的所有sequence參數.

如果想要改變start值,必須 drop sequence 再 re-create.

命令格式如下:

ALTER SEQUENCE test_sequence

INCREMENT BY 10

MAXVALUE 10000

CYCLE-- 到10000後從頭開始

NOCACHE ;

4. 刪除 Sequence

DROP SEQUENCE order_seq;

更多Oracle相關信息見Oracle 專題頁面 ?tid=12