在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關係
1.create sequence
create sequence seq_log_idminvalue 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 插入測試');注意:第一次nextval返回的是初始值;隨後的nextval會自動增加你定義的increment by值,然後返回增加後的值。currval:返回 sequence的當前值
nextval:增加sequence的值,然後返回 增加後sequence值
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
建立序列注::new 代表 資料改變後的新值,相對應的有 :old 原值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;
:= 代表 賦
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...