無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

ALTER SEQUENCE

名前

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

概要

ALTER SEQUENCE [ IF EXISTS ] 

name

 [ INCREMENT [ BY ] 

increment

 ]
    [ MINVALUE 

minvalue

 | NO MINVALUE ] [ MAXVALUE 

maxvalue

 | NO MAXVALUE ]
    [ START [ WITH ] 

start

 ]
    [ RESTART [ [ WITH ] 

restart

 ] ]
    [ CACHE 

cache

 ] [ [ NO ] CYCLE ]
    [ OWNED BY { 

table_name

.

column_name

 | NONE } ]
ALTER SEQUENCE [ IF EXISTS ] 

name

 OWNER TO 

new_owner


ALTER SEQUENCE [ IF EXISTS ] 

name

 RENAME TO 

new_name


ALTER SEQUENCE [ IF EXISTS ] 

name

 SET SCHEMA 

new_schema

説明

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

ALTER SEQUENCE を使用するには、シーケンスの所有者でなければなりません。 シーケンスのスキーマを変更するには、新しいスキーマにおける CREATE 権限も持たなければなりません。 所有者を変更するには、新しく所有者となるロールの直接または間接的なメンバでなければなりません。 またそのロールはシーケンスのスキーマ上に CREATE 権限を持たなければなりません。 (これらの制限は、シーケンスの削除または再作成によりユーザが実行できないことを、所有者の変更により実行されないことを確実にするためのものです。 しかし、スーパーユーザはすべてのシーケンスの所有者を変更することができます。)

パラメータ

name

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

IF EXISTS

シーケンスが存在しない場合にエラーとしません。 この場合、注意メッセージが発生します。

increment

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

minvalue
NO MINVALUE

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

maxvalue
NO MAXVALUE

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

start

省略可能な START WITH start 句は、記録されているシーケンスの開始値を変更します。 これは 現在の シーケンス値に影響しません。 単に将来実行される ALTER SEQUENCE RESTART コマンドが使用する値を設定するだけです。

restart

省略可能な RESTART WITH restart 句は、シーケンスの現在値を変更します。 これは is_called = false 付きで setval 関数を呼び出すことと同じです。 指定した値は 次の nextval 呼出時に返されます。 restart を付けずに RESTART と記述することは、 CREATE SEQUENCE で記録、または前回 ALTER SEQUENCE START WITH で設定された開始値を指定したことと同じです。

cache

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

CYCLE

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

NO CYCLE

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

OWNED BY table_name . column_name
OWNED BY NONE

OWNED BY オプションにより、シーケンスは指定されたテーブル列に関連付けされ、その列(やテーブル全体)が削除されると、自動的にシーケンスも同様に削除されるようになります。 指定があると、以前に指定されたシーケンスの関連は、指定された関連に置き換えられます。 指定するテーブルは、シーケンスと同一所有者でなければならず、また、同一のスキーマ内に存在しなければなりません。 OWNED BY NONE を指定することで、既存の関連は削除され、シーケンスは "独立" したものになります。

new_owner

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

new_name

シーケンスの新しい名称です。

new_schema

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

注釈

同じシーケンスから番号を取得するトランザクションの同時実行ブロックを防ぐために、シーケンス生成パラメータに関する ALTER SEQUENCE の操作はロールバックできません。 ALTER SEQUENCE による変更は即座に反映され、元に戻すことはできません。 しかし、 OWNED BY OWNER TO RENAME TO および SET SCHEMA 句は通常のカタログ更新となり、ロールバックすることができます。

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

ALTER SEQUENCE はシーケンスの currval 状態には影響しません。 (8.3より前の PostgreSQL では影響を与える場合がありました。)

歴史的な理由により ALTER TABLE はシーケンスにも使用することができます。 しかし、シーケンスに対して許される ALTER TABLE の構文は、上で示した構文と等価なものだけです。

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

ALTER SEQUENCE serial RESTART WITH 105;

互換性

ALTER SEQUENCE は、 PostgreSQL の拡張である START WITH OWNED BY OWNER TO RENAME TO SET SCHEMA 構文を除いて、標準 SQL に従っています。

関連項目

CREATE SEQUENCE , DROP SEQUENCE

powered by SEO.CUG.NET