oracle建立sequence序列語法

2022-01-20 00:55:02 字數 1969 閱讀 1479

在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關係

1.create sequence

create sequence seq_log_id

minvalue 1 --增長最小值maxvalue 9999999999 --增長最大值,也可以設定nomaxvalue -- 不設定最大值start with 101 --從101開始計數increment by 1 --自增步長為1cache 50 --設定快取cache個序列,如果系統down掉了或者其它情況將會導致序列不連續,也可以設定為---nocache防止跳號

cycle; --迴圈,當達到最大值時,不是從start with設定的值開始迴圈。而是從1開始迴圈

2.使用sequence的值

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

currval:返回 sequence的當前值 

nextval:增加sequence的值,然後返回 增加後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防止這種情況。

3.alter and drop sequence

擁有alter any sequence 許可權才能改動sequence. 可以alter除start至以外的所有sequence引數.如果想要改變start值,必須 drop sequence 再 re-create。

alter sequence seqtest maxvalue 9999999;

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

drop sequence seqtest;

4.建立觸發器trigger觸發呼叫sequence

建立序列

create sequence seq_id

minvalue 1maxvalue 99999999start with 1increment by 1nocache

order;

建解髮器**為:

create or replace trigger tri_test_id

before insert on s_depart --defore在新增時觸發s_depart 是表名

foreach row --行級觸發器

declare

nextid number;

begin

if :

new.departid is nullor :new.departid=0 then --departid是列名

select seq_id.nextval --seq_id正是剛才建立的

into nextid

from sys.dual;

:new.departid:=nextid;

end if;

end tri_test_id;

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

:= 代表 賦

Oracle中如何建立使用SEQUENCES

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

Oracle建立自增長序列 SEQUENCE

oracle通過建立序列來實現自增張欄位。建立序列的語法 建立序列的語法 create sequence user sequence name increment by n start with n maxvalue n nomaxvalue minvalue n nominvalue 修改序列的語...

sql server建立序列sequence

1 建立乙個序列物件 1 create sequence schema name sequence name 2as built in integer type user defined integer type 3 start with 4increment by 5 6 7cycle 8 seq...