SQL sequence


一:Oracle 的序列號有如下特點:

  • 序列號是獨立於表的對象,由 Oracle 自動維護。
  • 序列號可以對多個用戶共享使用,即同一個序列對象供多個表使用且相互獨立。
  • 在 SQL 語句中使用序列號就可以使用它產生的序列號

二:Oracle 的序列號創建

CREATE SEQUENCE sequence_name
[START WITH n]
[INCREMENT BY n]
[{MAXVALUE n|NOMAXVALUE}]
[{MINVALUE n|NOMINVALUE}

下面依次解釋各參數的含義:

  • START WITH n :序列號初始值,默認值為 1。
  • INCREMENT BY n :序列號的步進幅度,默認步進幅度為 1。
  • MAXVALUE n :定義序列號的最大值。
  • NOMAXVALUE:不設置序列號的最大值,但是我們知道計算機對於數據的表達是有限的,實際上這個值當序列號是升序時為 1027,序列號為降序時為-1。
  • MINVALUE n:定義序列號的最小值。
  • NOMINVALUE:不定義序列號的最小值,但是和參數 NOMAXVALUE 對應該值對於升序的序列號最小值為 1,對於降序的序列號的最小值為-1026。
  • CACHE :Oracle 服務器會預分配 n 個序列號並保保存在內存中。
  • NOCACHE:Oracle 服務器不會預分配序列號並保保存在內存中。
  • CYCLE :定義序列號在達到最大值或最小值后,將繼續產生序列號。
  • NOCYCLE:定義序列號在達到最大值或最小值后,不再產生序列號。

 

三:Oracle 修改序列號

  ALTER SEQUENCE sequence_name

[INCREMENT BY n]
[{MAXVALUE n|NOMAXVALUE}]
[{MINVALUE n|NOMINVALUE}]
[{CACHE n|NOC

下面解釋一下各參數的含義:

  • INCREMENT BY n :修改序列號每次執行的增長幅度。
  • MAXVALUE n|NOMAXVALUE:修改序列號的最大值|不設置最大值上限。
  • MINVALUE n|NOMINVALUE:修改序列號的最小值|不設置最小值下限。
  • CACHE n|NOCACHE:修改序列號在內存預分配並保存在內存中的個數。
  • ?CYCLE n|NOCYCLE:修改序列號使得序列號達到最大值或最小值后可以繼續產生序列號

四:Oracle刪除序列號

  drop sequence sequence_name;

 

五:案例

  創建一個表 EMPLOYEES

1 CREATE TABLE employees (
2     employee_id number(6) NOT NULL,
3     emp_name varchar2(20),
4     email varchar2(25) NOT NULL,
5     phone_number varchar2(20),
6     hiredate date NOT NULL
7 );

 

 

  創建序列

1 CREATE SEQUENCE emp_seq 
2 START WITH 1000 
3 INCREMENT BY 1
4 NOMAXVALUE
5 NOCYCLE;

 

 

  用 currval 偽列查詢當前序列號的值,使用 nextval 查詢序列號的下一個值

 


免責聲明!

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



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