oracle數據庫ID自增長--序列


什么是序列?在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開始,這是不可能的,除非你重新做。 

詳情參考:https://blog.csdn.net/yongqingmiao/article/details/6753421


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM