★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

ALTER SEQUENCE

名前

ALTER SEQUENCE  --  シーケンスジェネレータの定義を変更する

概要

ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ RESTART [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
ALTER SEQUENCE name SET SCHEMA new_schema
  

説明

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

ALTER SEQUENCEを使用するには、シーケンスの所有者でなければなりません。 シーケンスのスキーマを変更するには、新しいスキーマにおけるCREATE権限も持たなければなりません。

パラメータ

name

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

increment

INCREMENT BY increment句は省略可能です。 正の値が指定された時は昇順のシーケンス、負の値が指定された時は降順のシーケンスを作成します。 指定がない場合、以前の増分値が保持されます。

minvalue
NO MINVALUE

MINVALUE minvalueはシーケンスジェネレータが生成する最小値を決定します。 NO MINVALUEが指定された場合、昇順の時は1、降順の時は-(263-1)がデフォルトになります。 どちらのオプションも指定されていなければ、現在の最小値が保持されます。

maxvalue
NO MAXVALUE

MAXVALUE maxvalueはシーケンスが生成する最大値を決定します。 NO MAXVALUEが指定された場合、昇順の時は263-1、降順の時は-1がデフォルトになります。 どちらのオプションも指定されていなければ、現在の最大値が保持されます。

start

RESTART WITH start句は、シーケンスの現在値を変更します。この句は省略可能です。

cache

CACHE cache句を使用すると、アクセスを高速化するために、シーケンス番号を事前に割り当て、メモリに保存しておくことができます。 最小値は1です(一度に生成する値が1つだけなので、キャッシュがない状態になります)。 指定がなければ、以前のキャッシュ値が保持されます。

CYCLE

CYCLEキーワードを使用すると、シーケンスが限界値(昇順の場合はmaxvalue、降順の場合はminvalue)に達した時、そのシーケンスを周回させることができます。このキーワードは省略可能です。 限界値に達した時、次に生成される番号は、昇順の場合はminvalue、降順の場合はmaxvalueになります。

NO CYCLE

NO CYCLEキーワードが指定されると、シーケンスの限界値に達した後のnextval呼び出しは全てエラーとなります。このキーワードは省略可能です。 CYCLENO CYCLEも指定されていない場合は、以前の周回動作が保持されます。

new_schema

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

serialシーケンスを105から再開します。

ALTER SEQUENCE serial RESTART WITH 105;

注釈

同じシーケンスから番号を取得するトランザクションの同時実行ブロックを防ぐために、ALTER SEQUENCEはロールバックできません。 ALTER SEQUENCEによる変更は即座に反映され、元に戻すことはできません。

ALTER SEQUENCEは、コマンドを実行したバックエンド以外のバックエンドにおけるnextvalに対しては、すぐには効力を発揮しません。これらのバックエンドは事前に割り当てられた(キャッシュされた)値を持っており、この値を全て使い果たした後に、変更されたシーケンスパラメータを検知します。 コマンドを実行したバックエンドには、即座に変更が反映されます。

ALTER TABLEの一部の構文はシーケンスにも使用することができます。 例えば、シーケンス名の変更はALTER TABLE RENAMEを使用して可能です。

互換性

ALTER SEQUENCEは、SET SCHEMA構文を除いて、標準SQLに従っています。 SET SCHEMAPostgreSQLの拡張です。