Oracle中自動獲取序列sequence用法

2021-06-08 13:16:57 字數 1895 閱讀 8826

oracle中沒有自增型別的字段的,所以通常情況下需要定義乙個sequence來作為自動增長型別欄位的資料。

於是記錄了一些關於oracle sequence的資料,已備查用!

oracle中的序列(sequence)

1: 如何定義乙個序列

僅向前的數字變數(和sql中的自動編號有點像 identity(1,2) )

格式:create sequence 《序列名稱》

start with 《起始數》

increment by 《增長量》

[maxvalue 值]

[minvalue 值]

[cycle 當到達最大值的時候,將繼續從頭開始]

[nocycle -- 一直累加,不迴圈]

[cache ]

注意:第一次nextval返回的是初始值;隨後的nextval會自動增加你定義的increment by值,然後返回增加後的值。currval 總是返回當前sequence的值,但是在第一次nextval初始化之後才能使用currval,否則會出錯。一次nextval會增加一次sequence的值。

如果指定cache值,oracle就可以預先在記憶體裡面放置一些sequence,這樣訪問的快些。cache裡面的取完後,oracle自動再取一組到cache。 使用cache或許會跳號, 比如資料庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失. 所以可以在create sequence的時候用nocache防止這種情況。

example:

create sequence myseq

start with 1

increment by 2

maxvalue 40

minvalue 1

cycle

2:怎麼去取序列資料:

currval--->curenvalue

nextval-->nextvlaue

example:

select myseq.nextval from dual

注意一點:currval只有當nextval執行一次以後才可以用.

在建立表的時候,可以使用序列.

具體例子:

create table 公司基本資訊表 (

compid int,

compname varchar2(20) )

insert into 公司基本資訊表 values(myseq.nextval,'aa')

3:如何修改序列

修改前提是sequence 的owner,或者有alter any sequence 許可權才能改動sequence. 可以alter除start至以外的所有sequence引數.如果想要改變start值,必須 drop sequence 再 re-create .

alter sequence 的例子:

alter sequence emp_sequence

increment by 10

maxvalue 10000

cycle   -- 到10000後從頭開始

nocache

影響sequence的初始化引數:

sequence_cache_entries =設定能同時被cache的sequence數目。

也可以這樣

alter sequence myseq maxvalue 500

注意:不能改start with,其他隨便改(設定minvalue值的時候不能大於當前值)

4:如何檢視刪除某個表空間所有序列

檢視:select * from user_sequences

如何刪除:

drop sequence 序列名稱

5:sequence屬於什麼物件

sequence不屬於某個表,也不屬於某個字段,sequence僅僅屬於某個使用者。

Oracle 中自動序列

oracle中沒有象acces中自動編號的字段型別,所以在oracle中要想用乙個字段自動增值,還比較麻煩,在此提供給大家乙個方法,利用序列,來完成欄位的自動增加,下邊介紹一下怎麼建立序列,使用序列,和刪除序列。1.建立序列 create sequence create sequence seq a...

oracle序列 自動增加

普通使用者普通身份 create user yao identified by 654321 grant connect,resource to yao conn yao 654321 create table tp proid number primary key,proname varchar2...

Oracle中新增自動編號的序列

1.建立表t test create table t test id int address char 25 pay int 2.建立自增序列 create sequence seq t test id 建立名為zc的序列 increment by 1 自增長度為1 start with 1 從1開...