2011-09-20 60 views
2

我們已經在數據庫中有一個序列,現在我必須修改該序列,以便從一個特定值開始,我將從數據庫中獲取該值。我寫了以下代碼關於Oracle序列的問題

DECLARE 
    i_Seq INTEGER; 
BEGIN 
    SELECT MAX (col_id) + 1 INTO i_Seq from Table; 

    EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQHDR MINVALUE '|i_Seq|' MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH '|i_Seq|' CACHE 20 NOORDER NOCYCLE' 
END; 
/

我有以下問題。

  1. 我必須首先刪除舊序列,否則oracle會自行完成它?
  2. 開始於子句序列創建。我使用它嗎?或者我可以用任何數字替換它?
+1

刪除序列將導致依賴對象無效請參閱:http://stackoverflow.com/questions/7486917/reset-auto-increment-sequence-pl-sql解決方案,可以改變序列而不會丟失。 –

回答

7

是的,如果它已經存在,您將需要刪除序列。沒有CREATE OR REPLACE SEQUENCE選項。

是的,您正確使用START WITH子句。由於該序列被聲明爲NOCYCLE,因此不需要指定MINVALUE。