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;