ORACLE中序列 sequence的應用

2021-04-03 02:01:07 字數 1204 閱讀 8816

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表裡 按生成規則 查詢出最大的那個單據號,再拆分出來,再給順序號加 組合好後再...