Oracle常見資料庫物件—序列
一、序列:是oacle提供的用於產生一系列唯一數位資料庫物件。
a) 序列的特點
i. 自動提供唯一的數值
ii. 共用對象
iii. 主要用於提供主索引值
iv. 將序列值裝入記憶體可以提高訪問效率
b) 序列的定義
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE N|NOMAXVALUE}]
[{MINVALUE n|NOMINVALUE}]
[{CYCLE |NOCYCLE}]
[{CACHE n|COCACHE}];
二、序列的建立
a) 要有建立序列的許可權 create sequence 或 create any sequence
b) 建立序列的文法
CREATE SEQUENCE sequence //建立序列名稱
[INCREMENT BY n] //遞增的序列值是n 如果n是正數就遞增,如果是負數就遞減 預設是1
[START WITH n] //開始的值,遞增預設是minvalue 遞減是maxvalue
[{MAXVALUE n | NOMAXVALUE}] //最大值
[{MINVALUE n | NOMINVALUE}] //最小值
[{CYCLE | NOCYCLE}] //迴圈/不迴圈
[{CACHE n | NOCACHE}];//分配並存入到記憶體中
c) 注意事項
i. NEXTVAL 返回序列中下一個有效值,任何使用者都可以引用
ii. CURRVAL 中存放序列的當前值
iii. NEXTVAL 應在 CURRVAL 之前指定 ,二者應同時有效
三、序列的使用
a) 將序列值裝入記憶體可提高訪問效率
b) 序列在下列情況下出現裂縫:
i. 復原
ii. 系統異常
iii. 多個表同時使用同一序列
c) 如果不將序列的值裝入記憶體(NOCACHE), 可使用表 USER_SEQUENCES 查看序列當前的有效值
四、修改序列
a) 修改序列的增量, 最大值, 最小值, 迴圈選項, 或是否裝入記憶體
例:ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;
Sequence altered.
b) 注意事項
i. 必須是序列的擁有者或對序列有 ALTER 許可權
ii. 只有將來的序列值會被改變
iii. 改變序列的初始值只能通過刪除序列之後重建序列的方法實現
iv. 使用DROP SEQUENCE 語句刪除序列
v. 刪除之後,序列不能再次被引用