Oracle中Sequence的使用

2021-04-20 05:35:00 字數 1495 閱讀 9882

有用沒用轉乙個,省著用的時候總要查。

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 中的Sequence介紹

select empseq.currval from dual altersequence user.sequence name increment by n maxvalue n nomaxvalue minvalue n nominvalue 修改序列可以 修改未來序列值的增量。設定或撤消最小值...

oracle中的序列 sequence

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方,保證不會重複 執行緒同步 1 create sequence 首先要有create sequence許可權,create sequence sequence increment by n 每次...

Oracle中的sequence用法

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,create sequence emp sequence incr...