ORACLE SEQUENCE用法 自增長

2022-07-19 06:03:14 字數 1850 閱讀 2811

1、create sequence

首先要有create sequence或者create any sequence許可權。

create

sequence seqtest

increment by1

--每次加幾個

start with1--

從1開始計數

nomaxvalue --

不設定最大值

nocycle --

一直累加,不迴圈

cache 10; --

設定快取cache個序列,如果系統down掉了或者其它情況將會導致序列不連續,也可以設定為---------nocache

得到值語句如下:

如得到上邊建立sequence值的語句為:

selectseqtest.currval fromdual

如在插入語句中

insertinto表名(id,name)values(seqtest.nextval,'sequence 插入測試');

注:- 第一次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防止這種情況。

例:altersequence seqtest maxvalue 9999999;

另: sequence_cache_entries引數,設定能同時被cache的sequence數目。

4、drop sequence

5、乙個例子

create

sequence seq_id

minvalue

1maxvalue

99999999

start

with

1increment by1

nocache

order

;建解髮器**為:

create

orreplace

trigger

tri_test_id

before

insert

on s_depart --

s_depart 是表名

foreach row

declare

nextid

number

;begin

if :new.departid is nullor :new.departid=

0then

--departid是列名

select seq_id.nextval --

seq_id正是剛才建立的

into

nextid

from

sys.dual;

:new.departid:

=nextid;

endif;

end tri_test_id;

注::new 代表 資料改變後的新值,相對應的有 :old 原值

:= 代表 賦值

原創 oracle sequence簡介

sequence簡介 2013 12 26 一 概述 sequence是序列號的意思,每次取的時候它會自動增加。sequence與表沒有從屬關係,與表一樣屬於使用者。二 主要內容 1 create sequence語法 首先使用者要有create sequence或者create any seque...

Oracle Sequence簡單介紹

oracle中提供了sequence物件,由系統提供自增長的序列號,通常用於生成資料庫資料記錄的自增長主鍵或序號的地方.下面就主要介紹一下關於sequence物件的生成,修改,刪除等常用的操作 1.生成 sequence 首先使用者要有create sequence或者create any sequ...

ORACLE SEQUENCE的簡單介紹

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,create sequence emp sequence incr...