Oracle重置序列(不刪除重建方式)
Oracle重置序列(不刪除重建方式)
Oracle中一般將自增sequence重置為初始1時,都是刪除再重建,這種方式有很多弊端,依賴它的函式和儲存過程將失效,需要重新編譯。
不過還有種巧妙的方式,不用刪除,利用步長引數,先查出sequence的nextval,記住,把遞增改為負的這個值(反過來走),然後再改回來。
假設需要修改的序列名:seq_name
1、select seq_name.nextval from dual; //假設得到結果5656
2、alter sequence seq_name increment by -5655; //注意是-(n-1)
3、select seq_name.nextval from dual; //再查一遍,走一下,重置為1了
4、alter sequence seq_name increment by 1; //還原
SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;
序列已建立。
SQL> create or replace procedure seq_reset(v_seqname varchar2) as
n number(10);
tsql varchar2(100);
begin
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
n:=-(n-1);
tsql:='alter sequence '||v_seqname||' increment by '|| n;
execute immediate tsql;
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
tsql:='alter sequence '||v_seqname||' increment by 1';
execute immediate tsql;
end seq_reset;
/
Oracle中一般將自增sequence重置為初始1時,都是刪除再重建,這種方式有很多弊端,依賴它的函式和儲存過程將失效,需要重新編譯。
不過還有種巧妙的方式,不用刪除,利用步長引數,先查出sequence的nextval,記住,把遞增改為負的這個值(反過來走),然後再改回來。
假設需要修改的序列名:seq_name
1、select seq_name.nextval from dual; //假設得到結果5656
2、alter sequence seq_name increment by -5655; //注意是-(n-1)
3、select seq_name.nextval from dual; //再查一遍,走一下,重置為1了
4、alter sequence seq_name increment by 1; //還原
SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;
序列已建立。
SQL> create or replace procedure seq_reset(v_seqname varchar2) as
n number(10);
tsql varchar2(100);
begin
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
n:=-(n-1);
tsql:='alter sequence '||v_seqname||' increment by '|| n;
execute immediate tsql;
execute immediate 'select '||v_seqname||'.nextval from dual' into n;
tsql:='alter sequence '||v_seqname||' increment by 1';
execute immediate tsql;
end seq_reset;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26474945/viewspace-1768243/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle序列使用:建立、刪除Oracle
- Oracle 11g刪除庫重建Oracle
- oracle主鍵序列的建立,刪除,修改序列起始值Oracle
- 【Oracle故障處理】-Oracle9i臨時表空間刪除重建Oracle
- 如何用靜默方式刪除oracle軟體Oracle
- 簡單介紹oracle重置序列的方法Oracle
- 刪除 oracleOracle
- MySQL 如何重建/恢復刪除的 sys SchemaMySql
- oracle10.2.0.1 (rhel4)rac刪除asm例項不乾淨導致重建asm例項出錯OracleASM
- oracle刪除datafile導致資料庫打不開Oracle資料庫
- EM資料庫重建 手動刪除資料庫資料庫
- 【刪除】【Oracle】完美刪除Windows系統上的Oracle軟體OracleWindows
- ORACLE刪除歸檔Oracle
- 【Oracle】刪除所有表Oracle
- Oracle閃回刪除Oracle
- oracle批次刪除表Oracle
- oracle delete 分批刪除Oracledelete
- oracle批量刪除表Oracle
- 快速刪除oracle物件Oracle物件
- 徹底刪除ORACLEOracle
- oracle刪除日誌Oracle
- cad刪除快捷鍵命令 cad刪除有幾種方式
- Oracle解除安裝卸不乾淨,Oracle徹底刪除的辦法(winxp)Oracle
- 誤刪除$ORACLE_HOME/dbs下的引數檔案、密碼檔案,如何快速重建Oracle密碼
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- Oracle 增加 修改 刪除 列Oracle
- 刪除oracle重複值Oracle
- Oracle 多表關聯刪除Oracle
- Oracle Rac 刪除節點Oracle
- Oracle刪除效率測試Oracle
- oracle 刪除使用者Oracle
- Oracle中大資料量刪除Oracle大資料
- AIX徹底刪除ORACLEAIOracle
- 刪除AIX下的ORACLEAIOracle
- 新增/刪除約束(Oracle)Oracle
- oracle級聯刪除使用者,刪除表空間Oracle
- PHP 刪除陣列中元素的方式PHP陣列
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle