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