ALTER SEQUENCE ステートメント

ALTER SEQUENCE ステートメントを使用すると、シーケンスを変更できます。

以下の点で、シーケンスを変更できます。
  • シーケンスを再始動する
  • 将来のシーケンス値の間の増分を変更する
  • 最小値または最大値を設定または除去する
  • キャッシュ済みシーケンス番号の数を変更する
  • シーケンスが循環するかどうかを決定する属性を変更する
  • 要求の順序でシーケンス番号が生成されるかどうかを変更する

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかの権限が含まれていなければなりません。
  • 変更するシーケンスに対する ALTER 特権
  • 暗黙的または明示的に指定されているスキーマに対する ALTERIN 特権
  • 暗黙的または明示的に指定されているスキーマに対する SCHEMAADM 権限
  • DBADM 権限

構文

構文図を読む構文図をスキップするALTER SEQUENCEsequence-name1RESTARTWITHnumeric-constantINCREMENT BYnumeric-constantMINVALUEnumeric-constantNO MINVALUEMAXVALUEnumeric-constantNO MAXVALUECYCLENO CYCLECACHEinteger-constantNO CACHEORDERNO ORDER
注:
  • 1 同じ節を複数回指定することはできません。

説明

sequence-name
変更するシーケンスを識別します。 この名前 (暗黙的または明示的スキーマ修飾子を含む) は、 現行のサーバーに存在するシーケンスを固有に識別しなければなりません。 この名前が示すシーケンスが、明示的または暗黙的に指定されたスキーマに存在しない場合、 エラー (SQLSTATE 42704) が戻されます。 sequence-name には、 システムが ID 列に対して生成したシーケンスを指定することはできません (SQLSTATE 428FB)。
RESTART
シーケンスを再始動します。 numeric-constant が指定されていない場合、シーケンスは、 そのシーケンスを作成した CREATE SEQUENCE ステートメントに開始値として暗黙的または 明示的に指定されている値で再始動されます。
WITH numeric-constant
指定した値でシーケンスを再始動します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てられる正または負の値にすることができます (SQLSTATE 42815)。
INCREMENT BY numeric-constant
連続したシーケンス値のインターバルを指定します。 この値は、シーケンスに関連する データ・タイプの列に割り当てられる正または負の値にすることができます (SQLSTATE 42815)。この値は、長精度整数定数の値を超えてはならず (SQLSTATE 42820)、また小数点の右側にゼロ以外の数字があってはなりません (SQLSTATE 428FA)。

この値が負の場合、これは降順シーケンスです。 この値が 0 の場合、または正の場合は、 ALTER ステートメント以降は昇順になります。

MINVALUE または NO MINVALUE
降順シーケンスが値の生成を循環または停止する最小値、あるいは最大値に達した後、 昇順シーケンスが循環する最小値を指定します。
MINVALUE numeric-constant
最小値にする数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、シーケンスに関連する データ・タイプの列に割り当てられる正または負の値にすることができます (SQLSTATE 42815) が、 最大値以下でなければなりません (SQLSTATE 42815)。
NO MINVALUE
昇順シーケンスの場合、値は元の開始値です。 降順シーケンスの場合、シーケンスに関連するデータ・タイプの最小値です。
MAXVALUE または NO MAXVALUE
昇順シーケンスが値の生成を循環または停止する最大値、あるいは最小値に達した後、 降順シーケンスが循環する最大値を指定します。
MAXVALUE numeric-constant
最大値にする数値定数を指定します。 この値は、小数点の右側に非ゼロの数字がない (SQLSTATE 428FA) かぎり、 シーケンスに関連するデータ・タイプの列に割り当てられる正または負の値にすることができます (SQLSTATE 42815) が、 最小値以上でなければなりません (SQLSTATE 42815)。
NO MAXVALUE
昇順シーケンスの場合、値はシーケンスに関連するデータ・タイプの最大値です。 降順の場合、値は元の開始値です。
CYCLE または NO CYCLE
その最大値または最小値に達した後、シーケンスが値の生成を続行するかどうかを指定します。 シーケンスが境界に達するのは、次の値が境界条件を正確に満たしたとき、またはその値を超えたときです。
CYCLE
最大値または最小値に達した後、このシーケンスについて値の生成を続行することを指定します。 このオプションが使用されると、昇順シーケンスが最大値に達した後、その最小値が生成されます。 降順シーケンスが最小値に達した後、その最大値が生成されます。 シーケンスの最大値および最小値は、循環に使用される範囲を決定します。

CYCLE が有効な場合、重複するシーケンス値が生成される場合があります。

NO CYCLE
シーケンスの最大値または最小値に達した後、そのシーケンスについて値は生成されないことを指定します。
CACHE または NO CACHE
高速アクセスのため、事前割り振り値のいくつかをメモリーに保管するかどうかを指定します。 これはパフォーマンスおよびチューニング・オプションです。
CACHE integer-constant
事前割り振りされ、メモリーに保管されるシーケンス値の最大数を指定します。 値を事前割り振りしてキャッシュに保管しておくと、シーケンス値を生成するとき、 ログへの同期入出力が少なくなります。
システム障害が起こると、コミットされたステートメントで使用されていないキャッシュ済みシーケンス値はすべて失われます (使用されなくなります)。失われる可能性のあるシーケンス値の最大数は、以下のように計算されます。
  • ORDER を指定する場合は、CACHE オプションに指定する値が最大数になります。
  • 複数パーティション環境では、CACHE オプションで指定する値と新しい ID 値を生成するメンバーの数を掛け合わせた値が最大数になります。

最小値は 2 です (SQLSTATE 42815)。

NO CACHE
シーケンスの値が事前割り振りされないよう指定します。 システム障害、シャットダウン、またはデータベース非活動化の際、 値が失われることはありません。 このオプションが指定されると、シーケンスの値はキャッシュに保管されません。 この場合、シーケンスの新しい値が要求されるたびに、ログに対して同期入出力が行われます。
ORDER または NO ORDER
要求の順序でシーケンス番号が生成されるかどうかを指定します。
ORDER
要求の順序でシーケンス番号が生成されるよう指定します。
NO ORDER
要求の順序でシーケンス番号を生成する必要がないことを指定します。

  • 今後のシーケンス番号だけが ALTER SEQUENCE ステートメントによって影響を受けます。
  • シーケンスのデータ・タイプは変更できません。 代わりに、新しいシーケンスに目的のデータ・タイプを指定して、 シーケンスをドロップおよび再作成してください。
  • シーケンスが変更されると、キャッシュされている値はすべて失われます。
  • シーケンスを再始動、または CYCLE に変更した後、以前にシーケンスによって生成された 値と重複するシーケンス番号が生成される可能性があります。

数値なしで RESTART を指定する理由として考えられるのは、 シーケンスを START WITH 値にリセットすることです。 この例では、1 から表の行数までの数値を生成し、一時表を使用して表に追加した列に その数値を挿入しています。 以降使用する時には、すべての結果行に番号が付けられて結果が返されます。
   ALTER SEQUENCE ORG_SEQ RESTART
   SELECT NEXT VALUE FOR ORG_SEQ, ORG.* FROM ORG