無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

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

 [ 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 は既存ドメインの定義を変更します。 以下に示す副構文があります。

SET/DROP DEFAULT

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

SET/DROP NOT NULL

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

ADD domain_constraint [ NOT VALID ]

この構文は CREATE DOMAIN と同一の構文を使って、ドメインに新しい制約を付与します。 新しい制約がドメインに追加された時、そのドメインを使用するすべての列が新しく追加された制約に対して検査されます。 これらの検査を NOT VALID オプションを使用して新しい制約を追加することで抑制することができます。 ALTER DOMAIN ... VALIDATE CONSTRAINT を使用することで、後で制約を有効にすることができます。 新しく挿入または更新された行については、 NOT VALID と印が付いていたとしても、常にすべての制約が検査されます。 NOT VALID CHECK 制約でのみ受け付けられます。

DROP CONSTRAINT [ IF EXISTS ]

この構文はドメイン上の制約を削除します。 IF EXISTS が指定された場合、制約が存在しなくてもエラーになりません。 この場合は代わりに注意メッセージが発生します。

RENAME CONSTRAINT

この構文はドメイン上の制約名を変更します。

VALIDATE CONSTRAINT

この構文は、以前に NOT VALID として追加された制約を検証します。 つまり、そのドメインを使用する列の中のすべてのデータが指定された制約を満たすかどうかを検証します。

OWNER

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

RENAME

この構文はドメインの名前を変更します。

SET SCHEMA

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

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

パラメータ

name

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

domain_constraint

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

constraint_name

削除または名前を変更する既存の制約名です。

NOT VALID

制約の妥当性について既存の列を検証しません。

CASCADE

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

RESTRICT

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

new_name

ドメインの新しい名前です。

new_constraint_name

制約の新しい名前です。

new_owner

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

new_schema

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

注釈

今のところ、 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;

互換性

ALTER DOMAIN 文は標準 SQL に準拠しています。 ただし、 OWNER RENAME SET SCHEMA VALIDATE CONSTRAINT 構文は例外で、 PostgreSQL の拡張です。 ADD CONSTRAINT 構文の NOT VALID 句も PostgreSQL の拡張です。

関連項目

CREATE DOMAIN , DROP DOMAIN

powered by SEO.CUG.NET