oracle
oracle中沒有象Acces中自動編號的欄位類型,所以在oracle中要想用一個欄位自動增值,還比較麻煩,在此提供給大家一個方法,利用序列,來完成欄位的自動增加,下邊介紹一下怎麼建立序列,使用序列,和刪除序列。
1.建立序列--------------create sequence
create sequence Seq_AutoID //所起序列名叫 Seq_AutoID ,需要記住此序列名,以後方可調用
minvalue 1 //最小值從1開始 可以根據自己的需要自訂
maxvalue 9999999999999999999 //序列最大值為 999999999999999999999 可以自訂
start with 1 //從1開始 可以自訂
increment by 1 //遞增幅度為 1 可以自訂
cache 20 ; //緩衝20
2. 調用序列,完成自動加1 ------------Seq_AutoID.nextval
在向表中插入、更新 資料時可以調用 ,由於自己實際應用中只用到了 插入時調用,所以在此只舉此列
EG: insert into table1 ( f1,f2,f3,f4) select f1,f2,f3,Seq_AutoID.nextval from table2 where 條件
當然上邊這句是批量插入資料,你也可以用 values值來一條條插入。在此需說明的一點為table1.f4欄位需為數值型(number)型。這樣,你的table1中的f4欄位就是從1開始,以幅度為1來遞增的數值了,實現了自動增加的功能。當然幅度可以自己定義。
還有一點是 序列是值是唯一的,只要你一直用nextval來遞增的話,在oracle中序號不會重複.可以用CurrVal來查詢當前的序列值,在你nextval後,currval也會跟著變。
3.序列的刪除--------------drop sequence
當為了重設序列時,或不需要序列時,可以先刪除序列
EG: drop sequence Seq_AutoID;
4.用序列來修改某個欄位的值
eg: update cse_depot set jobid=Seq_AutoID.nextval
以上這個例子是用當前的序列值給cse_depot的欄位 jobid賦值,使jobid欄位實現自動加1功能
以上幾點是自己跟據自己所用總結出來的,也希望大家跟帖參與討論。