Oracle中 sequences(序列)介紹

2021-09-23 15:06:54 字數 2229 閱讀 3272

oracle提供了sequence物件,由系統提供自增長的序列號,用於生成資料庫資料記錄的自增長主鍵或序號的地方。如果當前的序列不存在,它會建立乙個序列,如果存在,它首先要得到當前序列的最大值,然後再加一,實現自增長的功能。

建立序列命令

create sequence [user.]sequence_name

[increment by n]

[start with n]

[maxvalue n | nomaxvalue]

[minvalue n | nominvalue];

[nocycle]  --

increment by: 指定序列號之間的間隔,該值可為正的或負的整數,但不可為0。序列為公升序。忽略該子句時,預設值為1。

start with:指定生成的第乙個序列號。在公升序時,序列可從比最小值大的值開始,預設值為序列的最小值。對於降序,序列可由比最大值小的值開始,預設值為序列的最大值。

maxvalue:指定序列可生成的最大值。

nomaxvalue:為公升序指定最大值為1027,為降序指定最大值為-1。

minvalue:指定序列的最小值。

nominvalue:為公升序指定最小值為1。為降序指定最小值為-1026。

nocycle:一直累加,不迴圈。

在plsql developer中可以直接找sequences,新建序列,如下:

需要注意的是,cache的作用是當大量語句發生請求,申請序列時,為了避免序列在運用層實現序列而引起的效能瓶頸。oracle序列允許將序列提前生成 cache x個先存入記憶體,在發生大量申請序列語句時,可直接到執行最快的記憶體中去得到序列。但是如果設定了cache值,oracle將在記憶體裡預先放置一些sequence,以使訪問速度更快。cache裡面的取完後,oracle自動再取一組到cache。 但是,使用cache可能會跳號, 當遇到資料庫突然異常down掉(shutdown abort),cache中的sequence就會丟失. 

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

修改序列命令

使用者必須擁有alter any sequence 許可權才能修改sequence. 可以alter除start至以外的所有sequence引數.

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

語法如下:

altersequence [user.]sequence_name

[increment by n]

[maxvalue n| nomaxvalue ]

[minvalue n | nominvalue];

當然,最方便的還是可以在plsql developer中直接修改。可以修改未來序列值的增量;設定或撤消最小值或最大值;改變緩衝序列的數目;指定序列號是否是有序。

使用序列命令

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

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

[注意]

第一次nextval返回的是初始值;

隨後的nextval會自動增加你定義的increment by值,然後返回增加後的值。

currval 總是返回當前sequence的值,但是在第一次nextval初始化之後才能使用currval,否則會出錯。

一次nextval會增加一次 sequence的值,所以如果你在同乙個語句裡面使用多個nextval,其值就是不一樣的。 

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 得到下一位游標的值

刪除序列命令

drop  sequence 序列名;

Oracle 中的Sequence介紹

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

Oracle中Sequence的使用

有用沒用轉乙個,省著用的時候總要查。oracle提供了sequence物件,由系統提供自增長的序列號,通常用於生成資料庫資料記錄的自增長主鍵或序號的地方.下面介紹一下關於sequence 的生成,修改,刪除等常用的操作 1.建立sequence 使用如下命令新建sequence 使用者需要有crea...

oracle中的序列 sequence

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