シーケンスジェネレーターの定義を変更します。
構文
ALTER SEQUENCE name [ INCREMENT BY increment ]
[ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
[ CACHE cache | NOCACHE ] [ CYCLE ]説明
ALTER SEQUENCE は、既存のシーケンスジェネレーターのパラメーターを変更します。省略したパラメーターは、現在の設定が維持されます。
パラメーター
| パラメーター | デフォルトの動作 | 説明 |
|---|---|---|
name | — | 変更するシーケンスの名前。スキーマ修飾が可能です。 |
INCREMENT BY increment | 現在の増分を維持 | シーケンスのステップ値。正の値は昇順シーケンスを、負の値は降順シーケンスを作成します。 |
MINVALUE minvalue | 現在の最小値を維持 | シーケンスが生成できる最小値。 |
MAXVALUE maxvalue | 現在の最大値を維持 | シーケンスが生成できる最大値。 |
CACHE cache | NOCACHE | 現在のキャッシュ設定を維持 | メモリに事前割り当てするシーケンス値の数。最小値は 1 で、一度に 1 つの値を生成します。 |
CYCLE | 現在のサイクル設定を維持 | シーケンスが上限値または下限値に達したときに、値を折り返す (ラップアラウンドする) ことを許可します。昇順シーケンスの場合、最大値の次の値は MINVALUE になります。降順シーケンスの場合、最小値の次の値は MAXVALUE になります。 |
注意事項
変更は即時に反映され、元に戻すことはできません。 同じシーケンスから値を取得する同時実行トランザクションのブロッキングを防ぐため、ALTER SEQUENCE はロールバックをサポートしていません。
キャッシュは、変更が各バックエンドで有効になるタイミングに影響します。 現在のバックエンドでは、新しいパラメーターがすぐに反映されます。他のバックエンドは、キャッシュがなくなるまで事前割り当てされた NEXTVAL の値を使い続け、その後で新しいパラメーターを取得します。
Oracle との互換性
以下のキーワードは PolarDB for Oracle で利用可能ですが、Oracle データベースとの互換性はありません:
| キーワード | 動作 |
|---|---|
NO MINVALUE | 昇順シーケンスの場合は MINVALUE を 1 に、降順シーケンスの場合は -2^63-1 に設定します。 |
NO MAXVALUE | 昇順シーケンスの場合は MAXVALUE を 2^63-1 に、降順シーケンスの場合は -1 に設定します。 |
NO CYCLE | シーケンスが折り返さないように指定します。 |
例
シーケンス serial の増分を 2 に設定し、5 つの値を事前割り当てします:
ALTER SEQUENCE serial INCREMENT BY 2 CACHE 5;