oracle序列
阿新 • • 發佈:2018-12-21
目錄
1.什麼是序列
-
序列: 可供多個使用者用來產生唯一數值的資料庫物件
-
自動提供唯一的數值
-
共享物件
-
主要用於提供主鍵值
-
將序列值裝入記憶體可以提高訪問效率
-
2.定義序列
CREATE SEQUENCE sequence [INCREMENT BY n] --每次增長的數值 [START WITH n] --從哪個值開始 [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] --是否需要迴圈 [{CACHE n | NOCACHE}]; --是否快取登入
3.查詢序列
-
查詢資料字典檢視 USER_SEQUENCES 獲取序列定義資訊
SELECT sequence_name, min_value, max_value,
increment_by, last_number
FROM user_sequences;
4.NEXTVAL 和 CURRVAL 偽列
-
NEXTVAL 返回序列中下一個有效的值,任何使用者都可以引用
-
CURRVAL 中存放序列的當前值
-
NEXTVAL 應在 CURRVAL 之前指定,否則會報CURRVAL 尚未在此會話中定義的錯誤。
5.序列應用例項
INSERT INTO departments(department_id, department_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500);
6.修改序列
-- 修改序列的增量, 最大值, 最小值, 迴圈選項, 或是否裝入記憶體
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;
/*
注意事項:
1.必須是序列的擁有者或對序列有 ALTER 許可權
2.只有將來的序列值會被改變
3.改變序列的初始值只能通過刪除序列之後重建序列的方法實現
*/
7.刪除序列
-- 使用 DROP SEQUENCE 語句刪除序列 -- 刪除之後,序列不能再次被引用 DROP SEQUENCE dept_deptid_seq;
8.序列的裂縫
-
序列在下列情況下出現裂縫:
-
回滾
-
系統異常
-
多個表同時使用同一序列
-