Oracle中如何建立使用SEQUENCES

2021-09-30 04:46:38 字數 1699 閱讀 1815

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中如何建立dblink

當使用者要跨本地資料庫,訪問另外乙個資料庫表中的資料時,本地資料庫中必須建立了遠端資料庫的dblink,通過dblink本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。下面講介紹如何在本地資料庫中建立dblink.建立dblink一般有兩種方式,不過在建立dblink之前使用者必須有建立...

oracle中如何建立dblink

當使用者要跨本地資料庫,訪問另外乙個資料庫表中的資料時,本地資料庫中必須建立了遠端資料庫的dblink,通過dblink本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。下面講介紹如何在本地資料庫中建立dblink.建立dblink一般有兩種方式,不過在建立dblink之前使用者必須有建立...

oracle中如何建立dblink

當使用者要跨本地資料庫,訪問另外乙個資料庫表中的資料時,本地資料庫中必須建立了遠端資料庫的dblink,通過dblink本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。下面講介紹如何在本地資料庫中建立dblink.建立dblink一般有兩種方式,不過在建立dblink之前使用者必須有建立...