在oracle中sequence就是所謂的序列號

2021-04-18 23:46:40 字數 2287 閱讀 8821

create sequence

你首先要有

create sequence

或者create any sequence

許可權,create sequence emp_sequence

increment by 1 --

每次加幾個

start with 1 -- 從1

開始計數

nomaxvalue --

不設定最大值

nocycle --

一直累加,不迴圈

cache 10;

一旦定義了

emp_sequence

,你就可以用

currval

,nextval

currval=

返回sequence

的當前值

nextval=

增加sequence

的值,然後返回

sequence

值比如:

emp_sequence.currval

emp_sequence.nextval

可以使用

sequence

的地方:

- 不包含子查詢、

snapshot

、view

的select

語句- insert

語句的子查詢中

- nsert

語句的values

中- update

的set

中可以看如下例子:

insert into emp values

(empseq.nextval, 'lewis', 'clerk',7902, sysdate, 1200, null, 20);

select empseq.currval from dual;

但是要注意的是:

- 第一次

nextval

返回的是初始值;隨後的

nextval

會自動增加你定義的

increment by

值,然後返回增加後的值。

currval

總是返回當前

sequence

的值,但是在第一次

nextval

初始化之後才能使用

currval

,否則會出錯。一次

nextval

會增加一次

sequence

的值,所以如果你在同乙個語句裡面使用多個

nextval

,其值就是不一樣的。明白?

- 如果指定

cache

值,oracle

就可以預先在記憶體裡面放置一些

sequence

,這樣訪問的快些。

cache

裡面的取完後,

oracle

自動再取一組

到cache。使用

cache

或許會跳號,

比如資料庫突然不正常

down

掉(shutdown abort),cache

中的sequence

就會丟失

. 所以可以在

create sequence

的時候用

nocache

防止這種情況。2、

alter sequence

你或者是該

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

數目。可以很簡單的

drop sequence

drop sequence order_seq;

Oracle中自動獲取序列sequence用法

oracle中沒有自增型別的字段的,所以通常情況下需要定義乙個sequence來作為自動增長型別欄位的資料。於是記錄了一些關於oracle sequence的資料,已備查用 oracle中的序列 sequence 1 如何定義乙個序列 僅向前的數字變數 和sql中的自動編號有點像 identity ...

Oracle中如何建立使用SEQUENCES

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

Oracle中sequenc和觸發器

oracle中的sequence即序列號,在取的時候會隨著規定增長。比如1個由1開始,每次增長1的序列號。create trigger seq user1 start with 1 increment by 1 序列號,通常被我們用於作為自動增長的id號進行使用。對於乙個user1 id,usern...