ORACLE序列
什麼是序列?
序列: 可供多個用戶用來產生唯一數值的數據庫對象
自動提供唯一的數值
共享對象
主要用於提供主鍵值
將序列值裝入內存可以提高訪問效率
注意:
將序列值裝入內存可提高訪問效率
序列在下列情況下出現裂縫:
回滾
系統異常
多個表同時使用同一序列
如果不將序列的值裝入內存(NOCACHE), 可使用表 USER_SEQUENCES 查看序列當前的有效值
常用sql:
--創建sequence
create sequence s_test00
increment by 10 --每次增長10
start with 10--從10開始增長
maxvalue 100--提供的最大值
cycle--需要循環
nocache--不需要緩存登陸
NEXTVAL 和 CURRVAL 偽列:
NEXTVAL 返回序列中下一個有效的值,任何用戶都可以引用.
CURRVAL 中存放序列的當前值.
NEXTVAL 應在 CURRVAL 之前指定 ,否則會報CURRVAL 尚未在此會話中定義的錯誤.
--使sequence往下疊加
select s_test00.nextval from dual;
--查詢當前的sequence值
select s_test00.currval from dual;
--設置表的某列按照sequence增長
create table t_emp10 as select employee_id ,first_name , salary from employees where 1=2;
insert into t_emp10 values(s_test00.nextval , 'A',300);
--修改sequence
alter sequence s_test00
increment by 1
nocycle;
修改序列的注意事項:
必須是序列的擁有者或對序列有 ALTER 權限
只有將來的序列值會被改變
改變序列的初始值只能通過刪除序列之後重建序列的方法實現
--刪除序列
drop sequence e_test00;