Oracle中Sequence的使用
有用沒用轉一個,省著用的時候總要查。
Oracle提供了sequence物件,由系統提供自增長的序列號,通常用於生成資料庫資料記錄的自增長主鍵或序號的地方.
下面介紹一下關於sequence 的生成,修改,刪除等常用的操作:
1. 建立 Sequence
使用如下命令新建sequence(使用者需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE許可權):
CREATE SEQUENCE test_sequence INCREMENT BY 1 -- 每次加的個資料 START WITH 1 -- 從1開始計數 NOMAXVALUE -- 不設定最大值 NOCYCLE -- 一直累加,不迴圈 CACHE 10 ; [注意] 如果設定了CACHE值,ORACLE將在記憶體裡預先放置一些sequence,以使存取速度更快。cache裡面的取完後,oracle自動再取一組到cache。 但是,使用cache可能會跳號, 當遇到資料庫突然異常down掉(shutdown abort),cache中的sequence就會丟失. 因此,推薦在create sequence的時候使用 nocache 選項。
2. 使用 sequence:
sequence.CURRVAL -- 返回 sequence的當前值 sequence.NEXTVAL -- 增加sequence的值,然後返回 sequence 值
[注意] 第一次NEXTVAL返回的是初始值;隨後的NEXTVAL會自動增加你定義的INCREMENT BY值,然後返回增加後的值。
CURRVAL 總是返回當前SEQUENCE的值,但是在第一次NEXTVAL初始化之後才能使用CURRVAL,否則會出錯。 一次NEXTVAL會增加一次 SEQUENCE的值,所以如果你在同一個語句裡面使用多個NEXTVAL,其值就是不一樣的。
sequence 儲存在資料字典中,儲存於user_sequences表 LAST_NUMBER 為最終序列號,也就是sequence遊標當前所在的位置。
//get sequence last_number
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME
// NEXTVAL 使遊標指向下一位(增一或減一)
SELECT SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下一位遊標的值
3. 修改 Sequence
使用者必須擁有ALTER ANY SEQUENCE 許可權才能修改sequence. 可以alter除start至以外的所有sequence引數. 如果想要改變start值,必須 drop sequence 再 re-create.
命令格式如下:
ALTER SEQUENCE test_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000後從頭開始 NOCACHE ;
4. 刪除 Sequence DROP SEQUENCE order_seq;
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
相關文章
- 在Hibernate中關於Oracle sequence的使用KHOracle
- oracle的scn及sequenceOracle
- ORACLE SEQUENCE用法Oracle
- Oracle中Nextval用法SEQUENCE與SYS_GUID()OracleGUI
- 不同於Oracle:SEQUENCE的區別Oracle
- [20220321]探究oracle sequence.txtOracle
- [20220322]探究oracle sequence 2.txtOracle
- sequence to sequence模型模型
- [20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txtOracleREST
- Oracle中job的使用詳解Oracle
- ORACLE中%TYPE和%ROWTYPE的使用Oracle
- Oracle中Decode()函式的使用Oracle函式
- uvm的sequence
- 使用sequence作為多區域部署的id
- [譯]Kotlin中的龜(List)兔(Sequence)賽跑Kotlin
- Sequence recognition
- 在oracle中監視索引的使用情況Oracle索引
- 在JPA中請優先使用sequence策略生成實體識別符號的值 - Vlad Mihalcea符號
- sequence:從認識到會使用,今兒給你講的透透的
- oracle OMF的使用Oracle
- [譯]Effective Kotlin系列之使用Sequence來優化集合的操作(四)Kotlin優化
- PostgreSQL 序列(Sequence)SQL
- python sequence序列Python
- Rainbow Bracket SequenceAIRacket
- Increasing Sequence with Fixed OR
- PostgreSQL sequence (一)SQL
- 論文閱讀:Sequence to sequence learning for joint extraction of entities and relations
- oracle中的某一個使用者名稱修改Oracle
- FSM:Sequence 1101 recognizer
- F - Two Sequence Queries
- 裁剪序列Cut the Sequence
- DeepLearning – Overview of Sequence modelView
- E. Block SequenceBloC
- mysql實現sequenceMySql
- LeetCode 444 sequence reconstructionLeetCodeStruct
- 詳解數倉中sequence的應用場景及最佳化
- 使用Java將圖片生成sequence file並儲存到HBaseJava
- oracle 中的事務Oracle
- Oracle 中的exception——(Raise)OracleExceptionAI