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は、シーケンスのデータ型を変更します。 有効な型は、smallint、integer、bigintです。データ型を変更すると、前の最小値と最大値が古いデータ型の最小値または最大値であった場合 (つまり、シーケンスが暗黙的または明示的にNO MINVALUEまたはNO MAXVALUEを使用して作成された場合) に限り、シーケンスの最小値と最大値が自動的に変更されます。 それ以外の場合、同じコマンドの一部として新しい値が与えられない限り、最小値と最大値は保持されます。 最小値と最大値が新しいデータ型に収まらない場合、エラーが生成されます。
increment:INCREMENT BY句はオプションです。 正の値は昇順のシーケンスになり、負の値は降順のシーケンスになります。 指定されない場合、古い増分値は維持される。minvalueNO MINVALUE: オプションの句MINVALUEは、シーケンスが生成できる最小値を決定します。NO_MINVALUEが指定されている場合、1のデフォルト値と、昇順と降順のデータ型の最小値がそれぞれ使用されます。 どちらのオプションも指定しない場合、現在の最小値は維持されます。maxvalueNO MAXVALUE: オプションのMAXVALUEは、シーケンスの最大値を決定します。NO MAXVALUEが指定されている場合は、データ型の最大値のデフォルト値と、昇順と降順の-1が使用されます。 どちらのオプションも指定されていない場合、現在の最大値は維持されます。start: オプションのSTART WITH句は、シーケンスの記録された開始値を変更します。 これは現在のシーケンス値には影響しません。単に、将来のALTER sequence RESTARTコマンドが使用する値を設定します。restart: オプションのRESTART [ WITH]句は、シーケンスの現在の値を変更します。 これは、is_called=falseでsetval関数を呼び出すのと似ています。指定された値は、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の呼び出しはエラーを返します。CYCLEもNO CYCLEも指定されていない場合、古いサイクル挙動が維持される。[所有]table_name。colume_nameOWNED BYOWNED BY:OWNED BYオプションを使用すると、シーケンスが特定のテーブル列に関連付けられ、その列 (またはそのテーブル全体) が削除されると、シーケンスも自動的に削除されます。 指定されている場合、このアソシエーションはシーケンスの以前に指定されたアソシエーションを置き換えます。 指定されたテーブルは、同じ所有者を持ち、シーケンスと同じスキーマにある必要があります。OWNED BY NONEを指定すると、既存の関連付けが削除され、シーケンスが「フリースタンディング」になります。new_owner: シーケンスの新しい所有者のユーザー名。new_name: シーケンスの新しい名前。new_schema: シーケンスの新しいスキーマです。
注
ALTER SEQUENCEは、事前に割り当てられた (キャッシュされた) シーケンス値を持つ、現在のバックエンド以外のバックエンドのnextval結果にすぐには影響しません。 変更されたシーケンス生成パラメータに気付く前に、キャッシュされたすべての値を使い果たします。 現在のバックエンドはすぐに影響を受けます。
ALTER SEQUENCEは、シーケンスのcurrvalステータスには影響しません。 (PostgreSQL8.3の前は、時々そうでした。)
ALTER SEQUENCEは、nextval、currval、lastval、およびsetvalの同時呼び出しをブロックします。
歴史的な理由から、ALTER TABLEはシーケンスでも使用できますが、シーケンスで許可されるALTER TABLEの唯一のバリアントは、上記の形式と同等です。
例
と呼ばれるシーケンスを再起動するシリアル、105:
ALTER SEQUENCEシリアルRESTART WITH 105;