一: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 查詢序列號的下一個值