すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ALTER SEQUENCE

最終更新日:May 30, 2024

ALTER SEQUENCEは、既存のシーケンスジェネレータのパラメータを変更します。

説明

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

ALTER sequenceを使用するには、シーケンスを所有する必要があります。 シーケンスのスキーマを変更するには、新しいスキーマに対するCREATE権限も必要です。 所有者を変更するには、新しい所有ロールの直接または間接のメンバーである必要があります。また、そのロールはシーケンスのスキーマに対するCREATE権限を持つ必要があります。 (これらの制限により、所有者を変更しても、シーケンスを削除して再作成できないことは何もできません。 ただし、スーパーユーザーは、任意のシーケンスの所有権を変更できます。

概要

ALTERシーケンス [IF EXISTS] 名
        [AS data_type]
        [INCREMENT [ BY] インクリメント]
        [MINVALUE minvalue | NOMINVALUE] [ MAXVALUE maxvalue | NOMAXVALUE]
        [START [ WITH ] start]
        [ [ WITH] 再起動]
        [キャッシュキャッシュ] [ [ NO ] CYCLE]
        [{table_name.column_name | NONE} によって所有される]
ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER}
ALTER SEQUENCE [ IF EXISTS] 名RENAME TO new_name
ALTER SEQUENCE [ IF EXISTS] 名SET SCHEMA new_schema 

パラメーター

  • name: 変更するシーケンスの名前 (スキーマ修飾) 。

  • IF EXISTS: シーケンスが存在しない場合は、エラーをスローしないでください。 この場合、通知が発行されます。

  • data_type: オプションの句ASは、シーケンスのデータ型を変更します。 有効な型は、smallintintegerbigintです。

    データ型を変更すると、前の最小値と最大値が古いデータ型の最小値または最大値であった場合 (つまり、シーケンスが暗黙的または明示的にNO MINVALUEまたはNO MAXVALUEを使用して作成された場合) に限り、シーケンスの最小値と最大値が自動的に変更されます。 それ以外の場合、同じコマンドの一部として新しい値が与えられない限り、最小値と最大値は保持されます。 最小値と最大値が新しいデータ型に収まらない場合、エラーが生成されます。

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

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

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

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

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

    asetvalcallとは対照的に、シーケンスのRESTART操作はトランザクションであり、同時トランザクションが同じシーケンスから番号を取得するのをブロックします。 それが望ましい動作モードでない場合は、使用する必要があります。

  • cache: CACHE句を使用すると、シーケンス番号を事前に割り当ててメモリに保存し、アクセスを高速化できます。 最小値は1である (一度に1つの値のみを生成することができ、すなわち、キャッシュはない) 。 指定されていない場合、古いキャッシュ値は維持されます。

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

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

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

  • new_owner: シーケンスの新しい所有者のユーザー名。

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

  • new_schema: シーケンスの新しいスキーマです。

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

ALTER SEQUENCEは、シーケンスのcurrvalステータスには影響しません。 (PostgreSQL8.3の前は、時々そうでした。)

ALTER SEQUENCEは、nextvalcurrvallastval、およびsetvalの同時呼び出しをブロックします。

歴史的な理由から、ALTER TABLEはシーケンスでも使用できますが、シーケンスで許可されるALTER TABLEの唯一のバリアントは、上記の形式と同等です。

と呼ばれるシーケンスを再起動するシリアル、105:

ALTER SEQUENCEシリアルRESTART WITH 105;