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

ALTER TYPE

名前

ALTER TYPE -- 型定義を変更する

概要

ALTER TYPE 

name

 

action

 [, ... ]
ALTER TYPE 

name

 OWNER TO 

new_owner


ALTER TYPE 

name

 RENAME ATTRIBUTE 

attribute_name

 TO 

new_attribute_name

 [ CASCADE | RESTRICT ]
ALTER TYPE 

name

 RENAME TO 

new_name


ALTER TYPE 

name

 SET SCHEMA 

new_schema


ALTER TYPE 

name

 ADD VALUE [ IF NOT EXISTS ] 

new_enum_value

 [ { BEFORE | AFTER } 

existing_enum_value

 ]



ここで

action

は以下のいずれかです。


    ADD ATTRIBUTE 

attribute_name

 

data_type

 [ COLLATE 

collation

 ] [ CASCADE | RESTRICT ]
    DROP ATTRIBUTE [ IF EXISTS ] 

attribute_name

 [ CASCADE | RESTRICT ]
    ALTER ATTRIBUTE 

attribute_name

 [ SET DATA ] TYPE 

data_type

 [ COLLATE 

collation

 ] [ CASCADE | RESTRICT ]

説明

ALTER TYPE は既存の型の定義を変更します。 複数の副構文があります。

ADD ATTRIBUTE

この構文は、 CREATE TYPE と同じ構文を用いて、複合型に新しい属性を追加します。

DROP ATTRIBUTE [ IF EXISTS ]

この構文は複合型から属性を削除します。 IF EXISTS が指定された時にその属性が存在しないでもエラーにはなりません。 この場合は代わりに注意が発せられます。

SET DATA TYPE

この構文は複合型の属性の型を変更します。

OWNER

この構文は型の所有者を変更します。

RENAME

この構文は型の名前または複合型の個々の属性の名前を変更します。

SET SCHEMA

この構文は型を他のスキーマに移動します。

ADD VALUE [ IF NOT EXISTS ] [ BEFORE | AFTER ]

この構文は列挙型に新しい値を追加します。 列挙型の順序中での新しい値の場所は、既存の値の BEFORE または AFTER という形式で指定することができます。 指定がなければ新しい項目は値のリストの最後に追加されます。

IF NOT EXISTS が指定されている場合、型の中に新しい値が既に含まれていたとしてもエラーになりません。 注意が発生されますが、他の動作は行われません。 さもないと、新しい値がすでに存在しているとエラーが起こります。

CASCADE

自動的に変更される型で型付けされたテーブルとその子テーブルにこの操作を伝播します。

RESTRICT

変更対象の型がテーブルの型付けに使用されている場合に拒絶します。 これがデフォルトです。

ADD ATTRIBUTE DROP ATTRIBUTE ALTER ATTRIBUTE 操作は複数の変更リストにまとめて、並行して適用することができます。 例えば、複数の属性の追加、複数の属性の変更、またはその両方を1つのコマンドで実行することができます。

ALTER TYPE を使用するには型の所有者でなければなりません。 型のスキーマを変更するには、新しいスキーマにおける CREATE 権限も必要です。 所有者を変更するには、直接または間接的に新しい所有者ロールのメンバでなければなりません。 また、そのロールが型のスキーマにおいて CREATE を持たなければなりません。 (この制限により、強制的に、所有者の変更が型の削除と再作成で行うことができない何らかの処理を行わないようになります。 しかし、スーパーユーザはすべての型の所有者を変更することができます。) 属性を追加または属性の型の変更を行うためには、そのデータ型に対する USAGE 権限を持たなければなりません。

パラメータ

name

変更対象の既存の型の名前です(スキーマ修飾名も可)。

new_name

新しい型の名前です。

new_owner

新しい型の所有者のユーザ名です。

new_schema

型の新しいスキーマです。

attribute_name

追加、変更または削除する属性の名前です。

new_attribute_name

変名する属性の新しい名前です。

data_type

追加する属性のデータ型、または、変更する属性の新しい型です。

new_enum_value

列挙型リストの値に追加する新しい値です。 すべての列挙型のリテラル同様、引用符を付けなければなりません。

existing_enum_value

列挙型の並び順序において新しい値をその直前または直後に追加する、既存の列挙型の値です。 すべての列挙型のリテラル同様、引用符を付けなければなりません。

注意

ALTER TYPE ... ADD VALUE (列挙型に新しい値を追加する構文)はトランザクションブロック内で実行することはできません。

追加された列挙型の値を含む比較は、列挙型の元々の要素のみを含む比較よりも低速になることがあります。 通常これは、新しい値のソート位置がリストの最後ではなく BEFORE または AFTER を用いて設定された場合のみで起こります。 しかし最後に新しい値が追加された場合であっても起こる可能性があります。 (これは、OIDカウンタが元の列挙型を作成してから "周回" した場合に起こります。) この低下は通常は大きくありません。 しかしこれが問題であれば、列挙型を削除し再作成する、あるいはデータベースをダンプし再ロードすることで最適な性能まで戻すことができます。

データ型の名前を変更します。

ALTER TYPE electronic_mail RENAME TO email;

email 型の所有者を joe に変更します。

ALTER TYPE email OWNER TO joe;

email 型のスキーマを customers に変更します。

ALTER TYPE email SET SCHEMA customers;

型に新しい属性を追加します。

ALTER TYPE compfoo ADD ATTRIBUTE f3 int;

列挙型の特定のソート位置に新しい値を追加します。

ALTER TYPE colors ADD VALUE 'orange' AFTER 'red';

互換性

属性の追加および削除を行う構文は標準SQLの一部です。 他の構文はPostgreSQLの拡張です。

関連項目

CREATE TYPE , DROP TYPE

powered by SEO.CUG.NET