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は既存ドメインの定義を変更します。 以下に示す副構文があります。
この構文はドメインのデフォルト値の設定または削除を行います。 指定したデフォルト値は、その後のINSERTコマンドのみに適用されることに注意してください。 そのドメインを使用したテーブルの既存の行には影響を与えません。
この構文はドメインがNULL値を持つことができるかどうかを変更します。 SET NOT NULLを実行できるのは、ドメインを使用する列にNULL値が含まれていない場合のみです。
この構文はCREATE DOMAINと同一の構文を使って、ドメインに新しい制約を付与します。 ドメインを使用する全ての列が新しい制約を満たす場合のみ成功します。
この構文はドメイン上の制約を削除します。
この構文はドメインの所有者を指定したユーザに変更します。
この構文はドメインのスキーマを変更します。 ドメインに関連する制約はすべて新しいスキーマに移動します。
ALTER DOMAINを使用するにはドメインを所有していなければなりません。 ドメインのスキーマを変更するには、新しいスキーマにおけるCREATE権限を持たなければなりません。 所有者を変更するには、直接または間接的に新しいロールのメンバでなければなりません。 また、そのロールはドメインのスキーマにおいてCREATEを持たなければなりません。 (この制限により強制的に、所有者の変更に伴いドメインの削除や再作成ができなくなるといった問題が起こらないようになります。 しかし、スーパーユーザはすべてのドメインの所有者を変更することができます。)
変更対象となる既存のドメインの名前です(スキーマ修飾名も可)。
ドメイン用の新しいドメイン制約です。
削除する既存の制約名です。
その制約に依存するオブジェクトを自動的に削除します。
依存するオブジェクトがある場合、制約の削除要求を拒否します。 これがデフォルトの動作です。
ドメインの新しい所有者となるユーザの名前です。
ドメインの新しいスキーマです。
今のところ、ALTER DOMAIN ADD CONSTRAINTとALTER 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;