2015-08-19 48 views
1

我需要重命名另一架構中的序列串。其他具有相同currval架構中的重命名序列

RENAME old_seq到new_seq不起作用。

嘗試:

ALTER SEQUENCE old_seq RENAME TO new_seq; 

,但它給了我錯誤

ORA-02286: no options specified for ALTER SEQUENCE 

我不想提在創建序列,我此前提到的所有的選項,因爲他們需要的是相同的。只有名字需要改變。

+0

你正在使用哪個數據庫? –

+0

我正在使用11g db – Anu

回答

-1

你可以直出其重命名爲:

rename old_sequence to new_sequence; 

它會說表改名,但你可以忽略它。你的序列將被重命名。

試試吧。

+0

沒有。如前所述,序列的所有者是不同的。它不允許直接重命名序列。 – Anu

+0

此外,您正在失去目前的價值... – McK

2

如果您不是該序列的所有者,您可以使用下面的步驟: -

SELECT CURVAL FROM old_seq; 

這會給你Current_Sequence的價值。

掉落使用

DROP SEQUENCE old_seq; 

這個序列,並使用相同的名稱新的序列。使用

CREATE SEQUENCE old_seq; 

然後改變與此: -

ALTER SEQUENCE seq_example INCREMET BY <CURVAL FROM OLD VALUE>; 
0

從@ankit答案很符合什麼需要解決這個問題行,但它提出了一些問題和錯別字我」米解決這個答案。我希望它會有用。

首先,你必須選擇爲old_seq當前值:如果你得到一個ORA-08002錯誤那是因爲你首先需要爲了初始化索要NEXTVAL

SELECT old_seq.CURRVAL FROM dual; 

序列。只要做:

SELECT old_seq.NEXTVAL FROM dual; 

然後再次要求CURRVAL。

現在,你有電流值,只需使用

DROP SEQUENCE old_seq; 

刪除舊的序列,並通過使用

CREATE SEQUENCE new_seq START WITH <CURRVAL FROM old_seq>; 

創造你想要的名稱new_seq如果使用INCREMENT代替START WITH,您應該考慮到增量將應用於序列中每個請求的值。您必須創建序列,然後將增量重置爲1.使用START WITH可以避免該問題。

相關問題