oracle中sequences的使用
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物件,由系統提供自增長的序列號,通常用於生成資料庫資料記錄的自增長主鍵或序號的地方.下面介紹一下關於sequence 的生成,修改,刪除等常用的操作 1.建立sequence 使用如下命令新建sequence 使用者需要有crea...
oracle中的序列 sequence
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方,保證不會重複 執行緒同步 1 create sequence 首先要有create sequence許可權,create sequence sequence increment by n 每次...