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句は、シーケンスが生成できる最小値を決定します。minvalueNO MINVALUEを指定した場合、デフォルトとして昇順シーケンスでは 1、降順シーケンスではデータ型の最小値がそれぞれ使用されます。どちらのオプションも指定しない場合、現在の最小値が維持されます。 maxvalue/NO MAXVALUE-
オプションの
MAXVALUE句は、シーケンスの最大値を決定します。maxvalueNO MAXVALUEを指定した場合、デフォルトとして昇順シーケンスではデータ型の最大値、降順シーケンスでは -1 がそれぞれ使用されます。どちらのオプションも指定しない場合、現在の最大値が維持されます。 CYCLE-
オプションの
CYCLEキーワードを使用すると、昇順または降順のシーケンスがそれぞれmaxvalueまたはminvalueに達したときに、シーケンスをラップアラウンドすることができます。制限に達すると、生成される次の数値はそれぞれminvalueまたはmaxvalueになります。 NO CYCLE-
オプションの
NO CYCLEキーワードを指定した場合、シーケンスが最大値に達した後にnextvalを呼び出すと、エラーが返されます。CYCLEまたはNO CYCLEが指定されていない場合、古いサイクル動作が維持されます。 開始-
オプションの
START WITH句は、シーケンスの記録された開始値を変更します。これは現在のシーケンス値には影響しません。将来のstartALTER SEQUENCE RESTARTコマンドが使用する値を設定するだけです。 再起動-
オプションの
RESTART [ WITH句は、シーケンスの現在の値を変更します。これは、restart]is_called=falseでsetval関数を呼び出す場合と似ています。指定された値は、次のnextval呼び出しによって返されます。restart値を指定せずにRESTARTを書き込むことは、CREATE SEQUENCEによって記録された開始値、またはALTER SEQUENCE START WITHによって最後に設定された開始値を指定することと同じです。setval呼び出しとは対照的に、シーケンスに対するRESTARTオペレーションはトランザクションであり、同時トランザクションが同じシーケンスから番号を取得するのをブロックします。これが目的のオペレーションモードではない場合は、setvalを使用する必要があります。 キャッシュ-
CACHE句を使用すると、シーケンス番号を事前に割り当ててメモリに保存し、アクセスを高速化できます。値は 1 または 65536 以上の値のいずれかである必要があります。指定しない場合、古いキャッシュ値が維持されます。キャッシュ動作の詳細については、「CREATE SEQUENCE」のガイダンスを参照してください。cache OWNED BY/table_name.column_nameOWNED 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 拡張機能である AS、START WITH、OWNED BY、OWNER TO、RENAME
TO、および SET SCHEMA 句を除き、SQL 標準に準拠しています。