Oracle序列(Sequence)創建、使用、修改、刪除


Oracle對象課程:序列(Sequence)創建、使用、修改、刪除,序列(Sequence)是用來生成連續的整數數據的對象。序列常常用來作為主鍵中增長列,序列中的可以升序生成,也可以降序生成。創建序列的語法是:

語法結構:創建序列

CREATE SEQUENCE sequence_name

[START WITH num]

[INCREMENT BY increment]

[MAXVALUE num|NOMAXVALUE]

[MINVALUE num|NOMINVALUE]

[CYCLE|NOCYCLE]

[CACHE num|NOCACHE]

語法解析:

① START WITH:從某一個整數開始,升序默認值是1,降序默認值是-1。

② INCREMENT BY:增長數。如果是正數則升序生成,如果是負數則降序生成。升序默認值是1,降序默認值是-1。

③ MAXVALUE:指最大值。

④ NOMAXVALUE:這是最大值的默認選項,升序的最大值是:1027,降序默認值是-1。

⑤ MINVALUE:指最小值。

⑥ NOMINVALUE:這是默認值選項,升序默認值是1,降序默認值是-1026。

⑦ CYCLE:表示如果升序達到最大值后,從最小值重新開始;如果是降序序列,達到最小值后,從最大值重新開始。

⑧ NOCYCLE:表示不重新開始,序列升序達到最大值、降序達到最小值后就報錯。默認NOCYCLE。

⑨ CACHE:使用CACHE選項時,該序列會根據序列規則預生成一組序列號。保留在內存中,當使用下一個序列號時,可以更快的響應。當內存中的序列號用完時,系統再生成一組新的序列號,並保存在緩存中,這樣可以提高生成序列號的效率。Oracle默認會生產20個序列號。

⑩ NOCACHE:不預先在內存中生成序列號。

來源:Oracle培訓

案例2:創建一個從1開始,默認最大值,每次增長1的序列,要求NOCYCLE,緩存中有30個預先分配好的序列號。

代碼演示:生成序列號

SQL> CREATE SEQUENCE MYSEQ

  2  MINVALUE 1

  3  START WITH 1

  4  NOMAXVALUE

  5  INCREMENT BY 1

  6  NOCYCLE

  7  CACHE 30

  8  /

 

Sequence created

序列創建之后,可以通過序列對象的CURRVAL和NEXTVAL兩個“偽列”分別訪問該序列的當前值和下一個值。

代碼演示:序列使用

SQL> SELECT MYSEQ.NEXTVAL FROM DUAL;

NEXTVAL

----------

   1

SQL> SELECT MYSEQ.NEXTVAL FROM DUAL;

NEXTVAL

----------

2

SQL> SELECT MYSEQ.CURRVAL FROM DUAL;

CURRVAL

----------

   2

使用ALTER SEQUENCE可以修改序列,在修改序列時有如下限制:

1. 不能修改序列的初始值。

2. 最小值不能大於當前值。

3. 最大值不能小於當前值。

使用DROP SEQUENCE命令可以刪除一個序列對象。

代碼演示:序列修改和刪除

SQL> ALTER SEQUENCE MYSEQ

  2  MAXVALUE 10000

  3  MINVALUE -300

  4  /

SEQUENCE ALTERED

SQL> DROP SEQUENCE MYSEQ;

SEQUENCE DROPPED

 

 


免責聲明!

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



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