標籤:
序列:是用來產生唯一、連續的整數的資料庫物件。序列通常用來自動產生主鍵或唯一鍵的值。
1. 建立序列文法如下:
Create SEQUENCE sequence_name
[START WITH integer]
[INCREMENT BY integer]
[MAXVALUE integer|NOMAXVALUE]
[MINVALUE integer|NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHE interger|NOCACHE];
其中:START WITH: 是指定要產生的第一個序號。對於升序序列,其預設值為序列的最小值。對於降序序列,其預設值為序列的最大值。
INCREMENT BY:是用於指定序號之間的間隔。其預設值為1。如果integer為正值,則產生的序列將按升序排列,否則按降序排列。
MAXVALUE: 指定序列可以產生的最大值。
NOMAXVALUE: 這是預設選項,將升序序列的最大值設為10的27次冪,將降序序列的最大值設為-1。
MINVALUE: 指定序列的最小值。MINVALUE必須小於或等於START WITH的值,並且必須小於MAXVALUE。
NOMINVALUE: 這是預設選項,將升序序列的最小值設為1,將降序序列的最小值設為-10的26次冪。
CYCLE: 指定序列在達到最大值或最小值後,將繼續從頭開始產生值。
NOCYCLE: 這是預設選項。指定序列在達到最大值或最小值後,將不能再繼續產生值。
CACHE: 使用CACHE選項可以預先分配一組序號,並將其保留在記憶體中,這樣可以更快的訪問序號。
NOCACHE: 此項則不會為加快速度而預先分配序號。如果在建立序列時忽略了CACHE和NOCACHE選項,Oracle將預設緩衝20個序號。
樣本3:Create SEQUENCE toys_seq
START WITH 10
INCREMENT BY 2
MAXVALUE 2000
MINVALUE 10
NOCYCLE
CACHE 30;
2. 訪問序列:可以通過CURRVAL和NEXTVAL偽列來訪問該序列的值。
樣本4:示範從序列toys_seq中選擇值插入toys表中的toyid列。執行成功將會在該表的toyid列插入值"P10"和"P12"。
INSERT INTO toys(toyid,toyname,toyprice) values(‘p‘||toys_seq.NEXTVAL,‘TWENTY‘,25);
INSERT INTO toys(toyid,toyname,toyprice) values(‘p‘||toys_seq.NEXTVAL,‘MAGIC PENCIL‘,75);
樣本5:示範如何查看序列當前值
Select toys_seq.CURRVAL from dual;
3. 更改序列:ALTER SEQUENCE命令用於設定或刪除MINVALUE或MAXVALUE、修改增量值、修改緩衝中的序號的數目。
修改序列文法如下:注意,不能修改序列的START WITH參數。在修改序列時,應注意升序序列的最小值應小於最大值。
ALTER SEQUENCE [schema.]sequence_name
[INCREMENT BY integer]
[MAXVALUE integer|NOMAXVALUE]
[MINVALUE integer|NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHE interger|NOCACHE];
樣本6:示範如何設定一個新的MAXVALUE,並為toys_seq序列開啟了CYCLE。
ALTER SEQUENCE toys_seq
MAXVALUE 5000
CYCLE;
可以查詢字典視圖User_Sequences來查看使用者所建立的序列的詳細資料
4.刪除序列文法:Drop SEQUENCE toys_seq;
oracle學習篇十:序列