序列: 是oacle提供的用於產生一系列唯一數字的資料庫對象。 l 自動提供唯一的數值 l 共用對象 l 主要用於提供主鍵值 l 將序列值裝入記憶體可以提高訪問效率 創建序列: 1、 要有創建序列的許可權 create sequence 或 create any sequence 2、 創建序列的語法 ...
序列: 是oacle提供的用於產生一系列唯一數字的資料庫對象。
l 自動提供唯一的數值
l 共用對象
l 主要用於提供主鍵值
l 將序列值裝入記憶體可以提高訪問效率
創建序列:
1、 要有創建序列的許可權 create sequence 或 create any sequence
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}];//分配並存入到記憶體中 NEXTVAL 返回序列中下一個有效的值,任何用戶都可以引用 CURRVAL 中存放序列的當前值 NEXTVAL 應在 CURRVAL 之前指定 ,二者應同時有效
Create sequence seqEmp increment by 1 start with 1 maxvalue 3 minvalue 1 Cycle cache 2; //先nextval 後 currval Select seqEmp.nextval from dual; Select seqEmp.currval from dual; Cache<max-min/increment //解釋 { Create 創建 Sequence 序列 seqEmop 序列名稱 Increment by 步長 Stat with 1 開始值 Maxvalue 最大值 Minvalue 最小值 Cycle 迴圈 nocycle 不迴圈 Cache 緩存 Cache<maxvalue-minvalue/increment by//一般不採用緩存 Nextvalue 下一個 Currval 當前值 }
//實例應用 //實現id的自動遞增 //第一步 CREATE TABLE members( mid number(6), name varchar2(30), constraint pk_mid primary key(mid) ); Create sequence seq_members Increment by 1 Start with 1 Maxvalue 999999 Minvalue 1 Nocycle nocache insert into members values(seq_members.nextval,'qianyuliang'); commit; select * from members; /使用序列 會產生裂縫 序列在下列情況下出現裂縫: 回滾 系統異常 >多個表同時使用同一序列
查看序列
SELECT * FROM USER_SEQUENCES;
SELECT * FROM ALL_SEQUENCES;
SELECT * FROM DBA_SEQUENCES; //修改序列的增量, 最大值, 最小值, 迴圈選項, 或是否裝入記憶體 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}];//分配並存入到記憶體中 修改序列的註意事項: 必須是序列的擁有者或對序列有 ALTER 許可權 只有將來的序列值會被改變 改變序列的初始值只能通過刪除序列之後重建序列的方法實現 刪除序列 使用DROP SEQUENCE 語句刪除序列 刪除之後,序列不能再次被引用 Alter sequence seq_members maxvalue 5; Select seq_members.nextval from dual;