ALTER SEQUENCE

目的

ALTER SEQUENCE文を使用すると、既存の順序の増分値、最小値および最大値、キャッシュされる数および動作を変更できます。この文は、順序番号に影響します。

関連項目:

順序の詳細は、「CREATE SEQUENCE」を参照してください。

前提条件

順序が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、順序に対するALTERオブジェクト権限またはALTER ANY SEQUENCEシステム権限が必要です。

構文

alter_sequence::=

セマンティクス

この文のキーワードパラメータは、シーケンスを作成するときと同じ役割を果たします。

  • NEXTVALを最初に呼び出す前に、INCREMENT BYの値を変更する場合、いくつかの順序番号がスキップされます。このため、元のSTART WITHの値を保持するには、順序を削除し、これを元のSTART WITHの値および新しいINCREMENT BYの値を使用して再作成する必要があります。

  • 昇順の場合、RESTARTを指定してNEXTVALMINVALUEにリセットします。降順の場合、RESTARTによってNEXTVALMAXVALUEにリセットされます。

  • 順序を別の番号で再開するには、RESTARTSTART WITH句で指定して、順序を再開する値を設定します。

  • KEEP句またはNOKEEP句を使用して、要求のランタイムとフェイルオーバーとの間で順序を変更すると、その要求に対するアプリケーション・コンティニュイティのための再実行中にNEXTVALの元の値は維持されません。

  • いくつかの妥当性チェックが行われます。たとえば、MAXVALUEの値に現行の順序番号より小さい値は指定できません。

    関連項目:

    順序の作成については、「CREATE SEQUENCE」を参照してください。順序の削除および再作成については、「DROP SEQUENCE」を参照してください。

IF EXISTS

IF EXISTSは、既存の表を変更する場合に指定します。

ALTER VIEWIF NOT EXISTSを指定すると、ORA-11544: Incorrect IF EXISTS clause for ALTER/DROP statementが発生します。

SCALE

順序の拡張性を有効にするには、SCALEを使用します。SCALEが指定されている場合、数値オフセットが順序の先頭に付加され、生成された値からすべての重複が削除されます。

EXTEND

EXTENDSCALEとともに指定すると、生成される順序値は全長(x+y)になります。ここで、xは拡張可能なオフセット(デフォルト値は6)、yは順序内の数字の最大数(maxvalue/minvalue)です。

SCALEを使用する場合は、順序に対してORDERを同時に使用しないことをお薦めします。

NOEXTEND

NOEXTENDは、SCALE句のデフォルト設定です。NOEXTENDが設定されていると、生成される順序値の幅は最大でも順序内の数字の最大数(maxvalue/minvalue)です。この設定は、固定幅の列を移入するために順序が使用される、既存のアプリケーションとの統合に役立ちます。

SHARD

シャード間で一意の連番を生成するには、この句を使用します。

グローバル全シャード間で一意の順序を返す、グローバルで小さなシャード・オブジェクトとして、順序オブジェクトが作成されます。順序オブジェクトは、シャード・データベースと相対的な一意の順序値を返すカタログ・データベースでも作成されます。

シャード順序の動作は、EXTENDおよびNOEXTENDのキーワードで定義します。

EXTEND

SHARD句でEXTENDを指定する場合、生成される順序値は(x + y)の合計の長さになります。xSHARDオフセットの長さで、サイズは4です。サイズ4というのは、最大数のシャードの幅に対応します。つまり、順序値の最初に1000が追加されます。yは順序maxvalue/minvalueでの最大桁数です。

NOEXTEND

SHARD句のデフォルト設定はNOEXTENDです。

NOEXTENDを指定すると、生成される順序値の幅は最大でも順序内の数字の最大数(maxvalue/minvalue)です。この設定は、固定幅の列を移入するために順序が使用される、既存のアプリケーションとの統合に役立ちます。

SHARD NOEXTENDを指定して順序でNEXTVALを呼び出す場合、生成される値が順序のmaxvalue/minvalueで表される桁数を超えると、ユーザー・エラーがスローされます。

SHARDとSCALEによる順序

SCALE句とSHARD句を一緒に指定すると、順序は複数のインスタンスおよびセッションのシャード・データベースでグローバルに一意の、拡張可能な値になります。

SCALE句とSHARD句でEXTENDを指定する場合、生成される順序値は(x+y+z)の合計の長さになります。xSHARDオフセットの長さで、デフォルトのサイズは4です。yは拡張可能なオフセットの長さで、デフォルト値は6(5)、zは順序maxvalue/minvalueでの最大桁数です。

SHARD句とSCALE句でEXTENDまたはNOEXTENDを指定すると、SHARDSCALEの両方に適用されます。EXTENDまたはNOEXTENDを別々に指定する必要はありません。SHARD句とSCALE句の両方にEXTENDまたはNOEXTENDオプションを別々に指定すると、その値が同じでも違っていても解析エラーが発生し、EXTEND句が重複または競合しているというメッセージが返されます。

SHARDを使用する場合は、順序に対してORDERを同時に使用しないことをお薦めします。

SHARDは、CACHEモードとNOCACHEモードで使用できます。

順序の変更: 例

次の文は、customers_seq順序(「順序の作成: 例」で作成)に新しい最大値を設定します。

ALTER SEQUENCE customers_seq 
   MAXVALUE 1500;

次の文は、customers_seq順序にCYCLEおよびCACHEオプションを指定します。

ALTER SEQUENCE customers_seq 
   CYCLE
   CACHE 5;