Oracle提供了sequence對象,由系統提供自增加的序列號,一般用於生成數據庫數據記錄的自增加主鍵或序號的地方,通常結合觸發器使用。數據庫
Sequence是數據庫系統的特性,有的數據庫有Sequence,有的沒有。好比Oracle、DB二、PostgreSQL數據庫有Sequence,MySQL、SQL Server、Sybase等數據庫沒有Sequence。ide
Sequence是數據中一個特殊存放等差數列的表,該表受數據庫系統控制,任什麼時候候數據庫系統均可以根據當前記錄數大小加上步長來獲取到該表下一條記錄應該是多少,這個表沒有實際意義,經常用來作主鍵用。spa
首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權限。code
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 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; --取當前序列值
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}];//分配並存入到內存中
(1)必須是序列的擁有者或對序列有 ALTER 權限對象
(2)只有未來的序列值會被改變blog
(3)改變序列的初始值只能經過刪除序列以後重建序列的方法實現內存
使用DROP SEQUENCE 語句刪除序列,刪除以後,序列不能再次被引用。event