oracle資料庫ID自增長 序列

2022-07-01 15:45:07 字數 1319 閱讀 7509

什麼是序列?在mysql中有乙個主鍵自動增長的id,例如:uid number primary key auto_increment;在oracle中序列就是類似於主鍵自動增長,兩者功能是一樣的,只是叫法不同而已。

在oracle中想要實現id自動增長只能用序列來實現。在oracle中,是將序列裝入記憶體,可以提高訪問效率。

1.)序列的建立

create sequence 序列名稱

increment by n 每次增長多少 //系統預設值為1. 

start with  n從幾開始 //系統預設值為1.

[maxvalue  n最大值|nomaxvalue]  

//nomaxvalue:是系統對序列設定的預設值. 即指定公升序序列的最大值為10的27次方.降序序列的最大值為-1.

[minvalue n最小值|nominvalue] //同上

[cycle |nocycle 是否迴圈]

[cache  n快取的數量|nocache]  //指定要保留在記憶體中整數的個數.預設快取的格式為20個. 可以快取的整數最少為2個. 可以快取的整數個數最多為:cell(maximum_num—minimum_num)/abs(increment_num). 注:cell(序列的最大上限值—最小下限值,)/abs(每次自增的增量).

例如:create sequence person_pid_seq

increment by 1

start with 1

maxvalue 1000

nocycle

nocache;

可以直接建立,其他的選項全部是預設值。例如:create sequence person_pid_seq;

2.)序列的操作

序列建立完成之後,所有的自動增長就都是由我們自己操作了,那麼如果操作呢?提供了兩種方式。

2.1 nextval:取得序列的下乙個值

2.2 currval:取得當前序列的內容

注意:currval 需要再nextval呼叫之後才能使用

3.)序列的使用

insert into person values(person_pid_seq.nextval,'name,'adress');//一般是利用nextval,讓id保持一直遞增。

4.)序列的刪除

drop sequence person_pid_seq;

5.)序列的注意事項

由於序列是同auto_increment一樣的,所有它是不會回頭的,即使你刪掉了資料,它的id永遠不會回到以前,只會一直遞增,例如,你有十條資料,你刪了第十條,希望下一條的id從10開始,這是不可能的,除非你重新做。

詳情參考:

oracle資料庫ID自增長

使用sequence 建立sequence create sequence emp sequence increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 cache 10 一旦定義了emp seque...

資料庫id自增長

1.建立序列 create sequence create sequence innerid minvalue 1 maxvalue 99999999999999 start with 1 increment by 1 cache 20 order 2.innerid.currval 指當前序列 i...

oracle自增長序列

例1 建立序列 create sequence abc increment by1 start with 1maxvalue 9999999999 nocycle nocache 語法詳解 create sequence 序列名 increment by n 1 start with n 2 3 4...