ALTER SEQUENCE
目的
ALTER
SEQUENCE
文を使用すると、既存の順序の増分値、最小値および最大値、キャッシュされる数および動作を変更できます。この文は、順序番号に影響します。
関連項目:
順序の詳細は、「CREATE SEQUENCE」を参照してください。
前提条件
順序が自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、順序に対するALTER
オブジェクト権限またはALTER
ANY
SEQUENCE
システム権限が必要です。
構文
alter_sequence::=
セマンティクス
この文のキーワードとパラメータは、シーケンスを作成するときと同じ役割を果たします。
-
NEXTVAL
を最初に呼び出す前に、INCREMENT
BY
の値を変更する場合、いくつかの順序番号がスキップされます。このため、元のSTART
WITH
の値を保持するには、順序を削除し、これを元のSTART
WITH
の値および新しいINCREMENT
BY
の値を使用して再作成する必要があります。 -
昇順の場合、
RESTART
を指定してNEXTVAL
をMINVALUE
にリセットします。降順の場合、RESTART
によってNEXTVAL
はMAXVALUE
にリセットされます。 -
順序を別の番号で再開するには、
RESTART
をSTART
WITH
句で指定して、順序を再開する値を設定します。 -
KEEP
句またはNOKEEP
句を使用して、要求のランタイムとフェイルオーバーとの間で順序を変更すると、その要求に対するアプリケーション・コンティニュイティのための再実行中にNEXTVAL
の元の値は維持されません。 -
いくつかの妥当性チェックが行われます。たとえば、
MAXVALUE
の値に現行の順序番号より小さい値は指定できません。関連項目:
順序の作成については、「CREATE SEQUENCE」を参照してください。順序の削除および再作成については、「DROP SEQUENCE」を参照してください。
IF EXISTS
IF EXISTS
は、既存の表を変更する場合に指定します。
ALTER VIEW
にIF NOT EXISTS
を指定すると、ORA-11544: Incorrect IF EXISTS clause for ALTER/DROP statement
が発生します。
SCALE
順序の拡張性を有効にするには、SCALE
を使用します。SCALE
が指定されている場合、数値オフセットが順序の先頭に付加され、生成された値からすべての重複が削除されます。
EXTEND
EXTEND
をSCALE
とともに指定すると、生成される順序値は全長(x+y)
になります。ここで、x
は拡張可能なオフセット(デフォルト値は6)、y
は順序内の数字の最大数(maxvalue/minvalue)
です。
SCALE
を使用する場合は、順序に対してORDER
を同時に使用しないことをお薦めします。
NOEXTEND
NOEXTEND
は、SCALE
句のデフォルト設定です。NOEXTEND
が設定されていると、生成される順序値の幅は最大でも順序内の数字の最大数(maxvalue/minvalue)
です。この設定は、固定幅の列を移入するために順序が使用される、既存のアプリケーションとの統合に役立ちます。
SHARD
シャード間で一意の連番を生成するには、この句を使用します。
グローバル全シャード間で一意の順序を返す、グローバルで小さなシャード・オブジェクトとして、順序オブジェクトが作成されます。順序オブジェクトは、シャード・データベースと相対的な一意の順序値を返すカタログ・データベースでも作成されます。
シャード順序の動作は、EXTEND
およびNOEXTEND
のキーワードで定義します。
EXTEND
SHARD
句でEXTEND
を指定する場合、生成される順序値は(x + y)
の合計の長さになります。x
はSHARD
オフセットの長さで、サイズは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)
の合計の長さになります。x
はSHARD
オフセットの長さで、デフォルトのサイズは4です。y
は拡張可能なオフセットの長さで、デフォルト値は6(5)、z
は順序maxvalue/minvalue
での最大桁数です。
SHARD
句とSCALE
句でEXTEND
またはNOEXTEND
を指定すると、SHARD
とSCALE
の両方に適用されます。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;