ALTER SEQUENCE - Amazon Aurora DSQL

ALTER SEQUENCE

ALTER SEQUENCE – シーケンスジェネレーターの定義を変更します。

重要

シーケンスを使用する場合は、キャッシュ値を慎重に検討する必要があります。詳細については、「CREATE SEQUENCE」ページの重要なコールアウトを参照してください。

ワークロードパターンに基づいてシーケンスを使用する最適な方法のガイダンスについては、「シーケンスと ID 列の使用」を参照してください。

サポートされている構文

ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ [ NO ] CYCLE ] [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ] [ CACHE cache ] [ OWNED BY { table_name.column_name | NONE } ] ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema where cache is 1 or cache >= 65536

説明

ALTER SEQUENCE は既存のシーケンスジェネレーターのパラメータを変更します。ALTER SEQUENCE コマンドで特に設定されていないパラメータでは、以前の設定が保持されます。

ALTER SEQUENCE を使用するには、シーケンスを所有している必要があります。シーケンスのスキーマを変更するには、新しいスキーマに対する CREATE 権限も必要です。所有者を変更するには、新しい所有者ロールに対して SET ROLE ができなければなりません。また、そのロールにはシーケンスのスキーマに対する CREATE 権限が必要です。(これらの制限により、所有者を変更しても、シーケンスを削除して再作成することでできること以上のことは何も行われません。ただし、スーパーユーザーは、どのシーケンスの所有権も変更できます。)

パラメータ

.name

変更するシーケンスの名前 (オプションでスキーマ修飾)。

IF EXISTS

シーケンスが存在しなかったとしてもエラーになりません。この場合、通知が発行されます。

増分

INCREMENT BY increment 句はオプションです。正の値を指定すると昇順のシーケンスになり、負の値を指定すると降順のシーケンスになります。指定しない場合は、古い増分値は維持されます。

minvalue / NO MINVALUE

オプションの MINVALUE minvalue 句は、シーケンスが生成できる最小値を決定します。NO MINVALUE を指定した場合、デフォルトとして昇順シーケンスでは 1、降順シーケンスではデータ型の最小値がそれぞれ使用されます。どちらのオプションも指定しない場合、現在の最小値が維持されます。

maxvalue / NO MAXVALUE

オプションの MAXVALUE maxvalue 句は、シーケンスの最大値を決定します。NO MAXVALUE を指定した場合、デフォルトとして昇順シーケンスではデータ型の最大値、降順シーケンスでは -1 がそれぞれ使用されます。どちらのオプションも指定しない場合、現在の最大値が維持されます。

CYCLE

オプションの CYCLE キーワードを使用すると、昇順または降順のシーケンスがそれぞれ maxvalue または minvalue に達したときに、シーケンスをラップアラウンドすることができます。制限に達すると、生成される次の数値はそれぞれ minvalue または maxvalue になります。

NO CYCLE

オプションの NO CYCLE キーワードを指定した場合、シーケンスが最大値に達した後に nextval を呼び出すと、エラーが返されます。CYCLE または NO CYCLE が指定されていない場合、古いサイクル動作が維持されます。

開始

オプションの START WITH start 句は、シーケンスの記録された開始値を変更します。これは現在のシーケンス値には影響しません。将来の ALTER SEQUENCE RESTART コマンドが使用する値を設定するだけです。

再起動

オプションの RESTART [ WITH restart ] 句は、シーケンスの現在の値を変更します。これは、is_called = falsesetval 関数を呼び出す場合と似ています。指定された値は、次の nextval 呼び出しによって返されます。restart 値を指定せずに RESTART を書き込むことは、CREATE SEQUENCE によって記録された開始値、または ALTER SEQUENCE START WITH によって最後に設定された開始値を指定することと同じです。

setval 呼び出しとは対照的に、シーケンスに対する RESTART オペレーションはトランザクションであり、同時トランザクションが同じシーケンスから番号を取得するのをブロックします。これが目的のオペレーションモードではない場合は、setval を使用する必要があります。

キャッシュ

CACHE cache 句を使用すると、シーケンス番号を事前に割り当ててメモリに保存し、アクセスを高速化できます。値は 1 または 65536 以上の値のいずれかである必要があります。指定しない場合、古いキャッシュ値が維持されます。キャッシュ動作の詳細については、「CREATE SEQUENCE」のガイダンスを参照してください。

OWNED BY table_name.column_name / OWNED BY NONE

OWNED BY オプションを使用すると、シーケンスが特定のテーブル列に関連付けられるため、その列 (またはそのテーブル全体) が削除されると、シーケンスも自動的に削除されます。指定した場合、この関連付けは、シーケンスに対して以前に指定された関連付けを置き換えます。指定されたテーブルは、シーケンスと同じ所有者を持ち、同じスキーマにある必要があります。OWNED BY NONE を指定すると、既存の関連付けが削除され、シーケンスが「フリースタンディング」になります。

new_owner

シーケンスの新しい所有者のユーザー名です。

new_name

シーケンスの新しい名前。

new_schema

シーケンスの新しいスキーマ。

注意事項

ALTER SEQUENCE は、現在のバックエンド以外の、事前に割り当てられた (キャッシュされた) シーケンス値を持つバックエンドの nextval の結果にすぐには影響しません。変更されたシーケンス生成パラメータが認識される前に、キャッシュされたすべての値を使い果たします。現在のバックエンドはすぐに影響を受けます。

ALTER SEQUENCE はシーケンスの currval ステータスには影響しません。

ALTER SEQUENCE は、他のトランザクションに OCC を引き起こす可能性があります。

歴史上の理由から、ALTER TABLE はシーケンスでも使用できますが、シーケンスで許可される ALTER TABLE のバリエーションは、上記の形式と同等のものだけです。

serial というシーケンスを 105 で再開します。

ALTER SEQUENCE serial RESTART WITH 105;

互換性

ALTER SEQUENCE は、PostgreSQL 拡張機能である ASSTART WITHOWNED BYOWNER TORENAME TO、および SET SCHEMA 句を除き、SQL 標準に準拠しています。