Oracle提供了sequence對象,由系統提供自增長的序列號,通常用於生成資料庫數據記錄的自增長主鍵或序號的地方,一般結合觸發器使用。 Sequence是資料庫系統的特性,有的資料庫有Sequence,有的沒有。比如Oracle、DB2、PostgreSQL資料庫有Sequence,MySQL... ...
Oracle提供了sequence對象,由系統提供自增長的序列號,通常用於生成資料庫數據記錄的自增長主鍵或序號的地方,一般結合觸發器使用。
Sequence是資料庫系統的特性,有的資料庫有Sequence,有的沒有。比如Oracle、DB2、PostgreSQL資料庫有Sequence,MySQL、SQL Server、Sybase等資料庫沒有Sequence。
Sequence是數據中一個特殊存放等差數列的表,該表受資料庫系統控制,任何時候資料庫系統都可以根據當前記錄數大小加上步長來獲取到該表下一條記錄應該是多少,這個表沒有實際意義,常常用來做主鍵用。
1. 創建
1.1 要求
首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE許可權。
1.2 語法
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}];//分配並存入到記憶體中,可以提高訪問效率
1.3 示例
1 CREATE SEQUENCE LOCATIONS_SEQ 2 3 INCREMENT BY 1 4 5 START WITH 1 6 7 MAXVALUE 9900 8 9 MINVALUE 1 10 11 CACHE 2; 12 13 SELECT LOCATIONS_SEQ.nextval FROM DUAL; --取下一個序列值 14 15 SELECT LOCATIONS_SEQ.currval FROM DUAL; --取當前序列值View Code
2. 修改
2.1 語法
alter SEQUENCE sequence //序列名稱 [INCREMENT BY n] //遞增的序列值是n 如果n是正數就遞增,如果是負數就遞減預設是1 [START WITH n] //開始的值,遞增預設是minvalue 遞減是maxvalue [{MAXVALUE n | NOMAXVALUE}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //迴圈/不迴圈 [{CACHE n | NOCACHE}];//分配並存入到記憶體中
2.2 註意事項
(1)必須是序列的擁有者或對序列有 ALTER 許可權
(2)只有將來的序列值會被改變
(3)改變序列的初始值只能通過刪除序列之後重建序列的方法實現
三、刪除
使用DROP SEQUENCE 語句刪除序列,刪除之後,序列不能再次被引用。