ALTER DOMAIN name { SET DEFAULT expression | DROP DEFAULT } ALTER DOMAIN name { SET | DROP } NOT NULL ALTER DOMAIN name ADD domain_constraint [ NOT VALID ] ALTER DOMAIN name DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] ALTER DOMAIN name RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER DOMAIN name VALIDATE CONSTRAINT constraint_name ALTER DOMAIN name OWNER TO new_owner ALTER DOMAIN name RENAME TO new_name ALTER DOMAIN name SET SCHEMA new_schema
ALTER DOMAINは既存ドメインの定義を変更します。 以下に示す副構文があります。
この構文はドメインのデフォルト値の設定または削除を行います。 指定したデフォルト値は、その後のINSERTコマンドのみに適用されることに注意してください。 そのドメインを使用したテーブルの既存の行には影響を与えません。
この構文はドメインがNULL値を持つことができるかどうかを変更します。 SET NOT NULLを実行できるのは、ドメインを使用する列にNULL値が含まれていない場合のみです。
この構文はCREATE DOMAINと同一の構文を使って、ドメインに新しい制約を付与します。 新しい制約がドメインに追加された時、そのドメインを使用するすべての列が新しく追加された制約に対して検査されます。 NOT VALIDオプションを使用して新しい制約を追加することでこれらの検査を抑制することができます。 ALTER DOMAIN ... VALIDATE CONSTRAINTを使用することで、後で制約を有効にすることができます。 新しく挿入または更新される行については、NOT VALIDと印が付いていたとしても、常にすべての制約が検査されます。 NOT VALIDはCHECK制約でのみ受け付けられます。
この構文はドメイン上の制約を削除します。 IF EXISTSが指定された場合、制約が存在しなくてもエラーになりません。 この場合は代わりに注意メッセージが発生します。
この構文はドメイン上の制約名を変更します。
この構文は、以前にNOT VALIDとして追加された制約を検証します。 つまり、そのドメインを使用する列の中のすべてのデータが指定された制約を満たすかどうかを検証します。
この構文はドメインの所有者を指定したユーザに変更します。
この構文はドメインの名前を変更します。
この構文はドメインのスキーマを変更します。 ドメインに関連する制約もすべて新しいスキーマに移動します。
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 RENAME CONSTRAINT zipchk TO zip_check;
ドメインを新しいスキーマに移動します。
ALTER DOMAIN zipcode SET SCHEMA customers;