ALTER DOMAIN

名前

ALTER DOMAIN -- ドメイン定義を変更する

概要

ALTER DOMAIN name
    { SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN name
    { SET | DROP } NOT NULL
ALTER DOMAIN name
    ADD domain_constraint
ALTER DOMAIN name
    DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
ALTER DOMAIN name
    OWNER TO new_owner
ALTER DOMAIN name
    SET SCHEMA new_schema

説明

ALTER DOMAINは既存ドメインの定義を変更します。 以下に示す副構文があります。

SET/DROP DEFAULT

この構文はドメインのデフォルト値の設定または削除を行います。 指定したデフォルト値は、その後のINSERTコマンドのみに適用されることに注意してください。 そのドメインを使用したテーブルの既存の行には影響を与えません。

SET/DROP NOT NULL

この構文はドメインがNULL値を持つことができるかどうかを変更します。 SET NOT NULLを実行できるのは、ドメインを使用する列にNULL値が含まれていない場合のみです。

ADD domain_constraint

この構文はCREATE DOMAINと同一の構文を使って、ドメインに新しい制約を付与します。 ドメインを使用する全ての列が新しい制約を満たす場合のみ成功します。

DROP CONSTRAINT

この構文はドメイン上の制約を削除します。

OWNER

この構文はドメインの所有者を指定したユーザに変更します。

SET SCHEMA

この構文はドメインのスキーマを変更します。 ドメインに関連する制約はすべて新しいスキーマに移動します。

ALTER DOMAINを使用するにはドメインを所有していなければなりません。 ドメインのスキーマを変更するには、新しいスキーマにおけるCREATE権限を持たなければなりません。 所有者を変更するには、直接または間接的に新しいロールのメンバでなければなりません。 また、そのロールはドメインのスキーマにおいてCREATEを持たなければなりません。 (この制限により強制的に、所有者の変更に伴いドメインの削除や再作成ができなくなるといった問題が起こらないようになります。 しかし、スーパーユーザはすべてのドメインの所有者を変更することができます。)

パラメータ

name

変更対象となる既存のドメインの名前です(スキーマ修飾名も可)。

domain_constraint

ドメイン用の新しいドメイン制約です。

constraint_name

削除する既存の制約名です。

CASCADE

その制約に依存するオブジェクトを自動的に削除します。

RESTRICT

依存するオブジェクトがある場合、制約の削除要求を拒否します。 これがデフォルトの動作です。

new_owner

ドメインの新しい所有者となるユーザの名前です。

new_schema

ドメインの新しいスキーマです。

注釈

今のところ、ALTER DOMAIN ADD CONSTRAINTALTER DOMAIN SET NOT NULLは、指定されたドメインおよびその派生ドメインがデータベース内のいずれかのテーブルの複合型の列で使用されていた場合、失敗します。 これは少なくとも、こうした入れ子になった列に対する新しい制約を検証できるように改良されなければなりません。

ドメインにNOT NULL制約を付与します。

ALTER DOMAIN zipcode SET NOT NULL;

ドメインからNOT NULL制約を削除します。

ALTER DOMAIN zipcode DROP NOT NULL;

ドメインにCHECK制約を付与します。

ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);

ドメインからCHECK制約を削除します。

ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;

ドメインを新しいスキーマに移動します。

ALTER DOMAIN zipcode SET SCHEMA customers;

互換性

ALTER DOMAIN文は標準SQLに準拠しています。 ただし、OWNER構文およびSET SCHEMA構文はPostgreSQLの拡張です。

関連項目

CREATE DOMAIN, DROP DOMAIN