Sequence 批量更改與建立
select 'alter sequence '||sequence_name||' maxvalue 1300000000 cycle nocache;' from user_sequences where
sequence_name not like 'SEQ%' and sequence_name not like 'A20%' and sequence_name not like 'F51%';
select 'create sequence '||sequence_name||' start with 1300000001 maxvalue 1800000000 cycle nocache;' from user_sequences where
sequence_name not like 'SEQ%' and sequence_name not like 'A20%' and sequence_name not like 'F51%';
select 'drop sequence '||sequence_name||';' from user_sequences where
sequence_name not like 'SEQ%' and sequence_name not like 'A20%' and sequence_name not like 'F51%';
select 'alter sequence '||sequence_name||' maxvalue 1300000000 cycle nocache;' from user_sequences where
sequence_name not like 'SEQ%' and sequence_name not like 'A20%' and sequence_name not like 'F51%';
select 'create sequence '||sequence_name||' start with 1300000001 maxvalue 1800000000 cycle nocache;' from user_sequences where
sequence_name not like 'SEQ%' and sequence_name not like 'A20%' and sequence_name not like 'F51%';
select 'drop sequence '||sequence_name||';' from user_sequences where
sequence_name not like 'SEQ%' and sequence_name not like 'A20%' and sequence_name not like 'F51%';
------------------------------
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 ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3090/viewspace-668820/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle -- 批量更新sequence的儲存Oracle
- 【轉】MySQL中增加sequence管理功能(模擬建立sequence)MySql
- P處理 批量更改檔名
- Linux批量更改檔案字尾名Linux
- 教你怎麼在Mac上建立與更改鍵盤快捷鍵Mac
- Linux批量建立目錄Linux
- sequence to sequence模型模型
- 在MySQL中建立實現自增的序列(Sequence)MySql
- 批量域更改客戶端本地administrator密碼客戶端密碼
- Oracle 基本操作之 建立自增欄位方法-ORACLE SEQUENCEOracle
- 建立Materialized view log時是否使用sequence clause的差別ZedView
- R語言批量建立資料框R語言
- 批量匯出建立索引的指令碼索引指令碼
- 批量建立指定名稱資料夾
- shell指令碼建立使用者及批量建立使用者指令碼
- 建立新的控制檔案,更改引數
- 表格的批量重新命名與批量刪除
- 用 pttx 模組批量建立幻燈片
- Linux批量建立使用者指令碼Linux指令碼
- ECS開放批量建立例項OpenAPIRunInstancesAPI
- 批量刪除dbms_job建立的job
- Oracle批量建立、刪除資料庫表Oracle資料庫
- 批量修改檔名 與 批量檔案字元替換字元
- ORACLE sequence各引數及建立修改刪除使用詳解示例Oracle
- Oracle建立自增欄位方法-ORACLE SEQUENCE的簡單介紹Oracle
- ORACLE SEQUENCEOracle
- Sequence recognition
- 超簡單的批量建立資料夾方法
- linux批量建立和刪除使用者Linux
- Redis中PipeLine使用(二)---批量get與批量setRedis
- ORACLE SEQUENCE用法Oracle
- PostgreSQL 序列(Sequence)SQL
- PostgreSQL sequence (一)SQL
- Oracle - Sequence序列Oracle
- Oracle Sequence NocacheOracle
- Oracle序列sequenceOracle
- [指令碼例項]——大批量建立信任關係+大批量分發檔案指令碼
- Oracle建立自增欄位方法-ORACLE SEQUENCE的簡單介紹(轉帖)Oracle