Oracle之Sequence(序列)
(一)序列概念
序列: 是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}];//分配並存入到記憶體中
3、序列的屬性
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 步長
Start with 1 開始值
Maxvalue 最大值
Minvalue 最小值
Cycle 迴圈 nocycle 不迴圈
Cache 快取 Cache<maxvalue-minvalue/increment by//一般不採用快取
Nextvalue 下一個
Currval 當前值
}
(三)使用例項
//實現id的自動遞增
//第一步
create table cdpt(
id number(6),
name varchar2(30),
constraint pk_id primary key(id)
);
Create sequence seq_cdpt
Increment by 1
Start with 1
Maxvalue 999999
Minvalue 1
Nocycle
nocache
insert into cdpt values(seq_cdpt.nextval,’feffefe’);
commit;
select * from cdpt;
在使用序列插入資料時,序列總是從2開始的原因:oracle從11.2.0.1版本開始,提供了一個延遲段建立特性
即:當我們建立了新的表和序列,在插入資料時,序列會跳過第一個值。因此,插入資料序列從2開始,而不是從1開始。
解決方法:
第一種方法:將資料庫的“延遲段建立”特性設為false(需要相應許可權才可以)
alter system set deferred_segment_creation=false;
第二種方法:在建表時讓segment立即執行
create table stu(id int , name varchar2(10)) segment creation immediate;
(四)裂縫問題
/使用序列
會產生裂縫
l 序列在下列情況下出現裂縫:
• 回滾
• 系統異常
>多個表同時使用同一序列
//修改序列的增量, 最大值, 最小值, 迴圈選項, 或是否裝入記憶體
(五)修改刪除序列
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}];//分配並存入到記憶體中
修改序列的注意事項:
l 必須是序列的擁有者或對序列有 ALTER 許可權
l 只有將來的序列值會被改變
l 改變序列的初始值只能通過刪除序列之後重建序列的方法實現
刪除序列
l 使用DROP SEQUENCE 語句刪除序列
l 刪除之後,序列不能再次被引用
Alter sequence seqEmp maxvalue 5;
Select seqEmp.nextval from dual;
相關文章
- Oracle - Sequence序列Oracle
- Oracle序列sequenceOracle
- PostgreSQL 序列(Sequence)SQL
- python sequence序列Python
- 詳解序列(sequence)
- oracle之序列Oracle
- [題解]P4597 序列 sequence
- ORACLE SEQUENCEOracle
- Python基礎教程03 - 序列 (sequence)Python
- ORACLE SEQUENCE用法Oracle
- Oracle Sequence NocacheOracle
- Oracle 基本操作之 建立自增欄位方法-ORACLE SEQUENCEOracle
- Oracle Sequence Audses$研究Oracle
- oracle sequence語法Oracle
- oracle sequence 試用Oracle
- Oracle 12c新特性之Sequence的Session特性OracleSession
- oracle的scn及sequenceOracle
- Oracle中Sequence的使用Oracle
- 「crudapi」零程式碼實現訂單序列號SequenceAPI
- 在MySQL中建立實現自增的序列(Sequence)MySql
- oracle中sequence使用的限制Oracle
- Oracle序列Oracle
- oracle 序列Oracle
- sequence to sequence模型模型
- Oracle -- 批次更新sequence的儲存Oracle
- Oracle -- 批量更新sequence的儲存Oracle
- ORACLE SEQUENCE的簡單介紹Oracle
- Oracle Sequence Cache 引數說明Oracle
- Oracle中sequence cache的測試Oracle
- Oracle中sequence的使用方法Oracle
- 不同於Oracle:SEQUENCE的區別Oracle
- [CareerCup] 17.8 Contiguous Sequence with Largest Sum 連續子序列之和最大
- 詳解數倉物件設計中序列SEQUENCE原理與應用物件
- 【Sequence】序列操作start with,nextval,currval三者之間的“複雜”關係與重要結論
- UML建模之時序圖(Sequence Diagram)時序圖
- 吳恩達《序列模型》課程筆記(3)– Sequence models & Attention mechanism吳恩達模型筆記
- 讀論文-序列感知推薦系統(Sequence-Aware Recommender Systems)
- 【小竅門tip】oracle sequence 修改增量值Oracle