Oracle中sequence的使用方法
1、Create Sequence
(註釋:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE許可權)
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 —— 每次加幾個
START WITH 1 —— 從1開始計數
NOMAXVALUE —— 不設定最大值
NOCYCLE —— 一直累加,不迴圈
CACHE 10;
只要定義了emp_sequence,你就可以用使CURRVAL,NEXTVAL
CURRVAL=返回 sequence的當前值
NEXTVAL=增加sequence的值,然後返回 sequence 值
例如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequence的地方:
。 不包含子查詢、snapshot、VIEW的 SELECT 語句
。INSERT語句的子查詢中
。NSERT語句的VALUES中
。UPDATE 的 SET中
可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
SELECT empseq.currval FROM DUAL;
需要注意的是:
第一次NEXTVAL返回的是初始值;隨後的NEXTVAL會自動增加你定義的INCREMENT BY值,然後返回增加後的值。CURRVAL 總是返回當前SEQUENCE的值,但是在第一次NEXTVAL初始化之後才能使用CURRVAL,否則會出錯。一次NEXTVAL會增加一次 SEQUENCE的值,所以如果你在同一個語句裡面使用多個NEXTVAL,其值就會是不一樣的。
- 假如指定CACHE值,Oracle就可以預先在記憶體裡面放置一些sequence,這樣存取的快些。cache裡面的取完後,Oracle自動再取一組到cache. 使用cache或許會跳號, 比如資料庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失。 所以可以在create sequence的時候用nocache防止這種情況。
2、Alter Sequence
你需要有sequence的owner,或者擁有ALTER ANY SEQUENCE 許可權才能改動sequence. 可以alter除start至以外的所有sequence引數。如果想要改變start值,必須 drop sequence 再 re-create .
Alter sequence示例:
ALTER SEQUENCE emp_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000後從頭開始 NOCACHE ; |
可以影響Sequence的初始化引數:
SEQUENCE_CACHE_ENTRIES =設定能同時被cache的sequence數目。
簡單的Drop Sequence
DROP SEQUENCE order_seq;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7899089/viewspace-740374/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中Sequence的使用Oracle
- oracle中sequence使用的限制Oracle
- Oracle中sequence cache的測試Oracle
- Oracle中“HINT”的使用方法Oracle
- ORACLE SEQUENCEOracle
- oracle的scn及sequenceOracle
- 在Hibernate中關於Oracle sequence的使用KHOracle
- ORACLE SEQUENCE用法Oracle
- Oracle - Sequence序列Oracle
- Oracle Sequence NocacheOracle
- Oracle序列sequenceOracle
- Oracle中陣列使用方法Oracle陣列
- Oracle之Sequence(序列)Oracle
- Oracle Sequence Audses$研究Oracle
- oracle sequence語法Oracle
- oracle sequence 試用Oracle
- Oracle -- 批次更新sequence的儲存Oracle
- Oracle -- 批量更新sequence的儲存Oracle
- ORACLE SEQUENCE的簡單介紹Oracle
- 不同於Oracle:SEQUENCE的區別Oracle
- Oracle中Nextval用法SEQUENCE與SYS_GUID()OracleGUI
- 【轉】MySQL中增加sequence管理功能(模擬建立sequence)MySql
- oracle中4G以上記憶體的使用方法Oracle記憶體
- sequence to sequence模型模型
- Oracle Sequence Cache 引數說明Oracle
- spotlight on oracle的使用方法Oracle
- 【函式】Oracle中聚合函式rank()使用方法函式Oracle
- 在intersect中利用oracle sequence報錯_ora-02287Oracle
- oracle group by中cube和rollup字句的使用方法及區別Oracle
- Oracle JOB 使用方法Oracle
- jquery 中 $.map 的使用方法jQuery
- YogaKit中 position 的使用方法
- react中hooks的使用方法ReactHook
- Oracle建立自增欄位方法-ORACLE SEQUENCE的簡單介紹Oracle
- Oracle 12c新特性之Sequence的Session特性OracleSession
- [譯]Kotlin中的龜(List)兔(Sequence)賽跑Kotlin
- 在MySQL中建立實現自增的序列(Sequence)MySql
- 【小竅門tip】oracle sequence 修改增量值Oracle