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功能
以上幾點是自己跟據自己所用總結出來的,也希望大家跟帖參與討論。
Oracle自動增長序列介紹 sequence
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,create sequence emp sequence incr...
在ORACLE中建立自增字段,sequence
通過建立序列來實現 oracle sequence的簡單介紹 在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,cr...
oracle 順序號生成函式。仿Sequence
問題提出自專案中的老 乙個bill表,儲存所有的表單資訊,比如 員工入職單,離職單等等。別噴,我知道要分多個表。但領導的意願你是沒辦法違背的 表單的單據號是以四個字母 年月日 數字順序號來表示。每次取新單據號時要從bill表裡 按生成規則 查詢出最大的那個單據號,再拆分出來,再給順序號加 組合好後再...