4

別のスキーマで一連のシーケンスの名前を変更する必要があります。

old_seq から new_seq への RENAME は機能しません。

試した:

ALTER SEQUENCE old_seq RENAME TO new_seq;

しかし、それは私にエラーを与えます

ORA-02286: no options specified for ALTER SEQUENCE 

シーケンスの作成中に前述したすべてのオプションについては言及しません。それらは同じである必要があるからです。名前だけを変更する必要があります。

4

3 に答える 3

3

@ankit からの回答は、この問題を修正するために必要なものと非常に一致していますが、この回答で修正しているいくつかの問題とタイプミスが示されています。お役に立てば幸いです。

まず、 old_seqの現在の値を選択する必要があります。

SELECT old_seq.CURRVAL FROM dual;

ORA-08002エラーが発生した場合は、シーケンスを初期化するために最初に NEXTVAL を要求する必要があるためです。ただ行う:

SELECT old_seq.NEXTVAL FROM dual;

CURRVAL を再度要求します。

現在の値を取得したので、次を使用して古いシーケンスを削除します

DROP SEQUENCE old_seq;

を使用して、必要な名前で new_seq を作成します

CREATE SEQUENCE new_seq START WITH <CURRVAL FROM old_seq>;

INCREMENTの代わりにを使用する場合START WITHは、シーケンスから値を求めるすべてのリクエストにインクリメントが適用されることを考慮する必要があります。シーケンスを作成してから、インクリメントを 1 にリセットする必要があります。使用するとSTART WITH、その問題が回避されます。

于 2016-06-21T17:39:16.297 に答える
1

すぐに名前を変更できます:

rename old_sequence to new_sequence;

テーブルの名前が変更されたと表示されますが、無視できます。シーケンスの名前が変更されます。

それを試してみてください。

于 2015-08-19T09:36:30.873 に答える