CREATE DOMAIN domainname [AS] data_type [ DEFAULT default_expr ] [ constraint [ ... ] ] ここでの制約は、以下の通りです。 [ CONSTRAINT constraint_name ] { NOT NULL | NULL }
作成するドメインの名前です (スキーマ修飾名でも可)。
ドメインの基礎をなすデータ型です。これには、配列指定子が含まれる場合があります。データ型と配列のより詳細については ユーザガイド を参照して下さい。
DEFAULT 句を使用すると、ドメインデータ型の列にデフォルト値を指定できます。 その値は、任意の無変数式です (ただし、副 select は許可されません)。 デフォルト式のデータ型は、そのドメインのデータ型と一致する必要があります。
デフォルト式は、その列に値が指定されない、全ての挿入操作において使用されます。 ドメインにデフォルトがない場合、デフォルト値は NULL になります。
Note: デフォルト値が特定の列に指定された場合、ドメインに関連付けられている任意のデフォルト値はすべて上書きされます。 同様に、ドメインのデフォルト値は、基礎をなすデータ型に関連付けられた任意のデフォルト値も上書きします。
この制約には、オプションで名前を指定できます。指定されなければ、システムが名前を生成します。
このドメインの値として NULL を使用できません。
このドメインの値として NULL を使用できます。これがデフォルトです。
この句は非標準的な SQL データベースとの互換性のためだけに使用可能です。新しいアプリケーションでこれを使用しないで下さい。
CREATE DOMAIN を実行すると、ユーザは、現在のデータベースで使用する新しいデータドメインを PostgreSQL に登録することができます。 ドメインを定義したユーザが、その所有者となります。
スキーマ名が付けられている場合 (たとえば、CREATE DOMAIN myschema.mydomain ...)、ドメインは指定されたスキーマで作成されます。 付けられていなければ、そのドメインは現在のスキーマ (検索パスの前にあるスキーマ。CURRENT_SCHEMA() 参照) で作成されます。 ドメイン名は、そのスキーマ内に存在するデータ型およびドメインの間で、一意である必要があります。
ドメインを使用すると、テーブル間で共通なフィールドをメンテナンスのために 1 箇所にまとめることができ、便利です。 たとえば、E-mail アドレスの列が複数のテーブルで使用されていて、すべて同じプロパティを持っている場合があります。 各テーブルに個別に制約を設定するよりも、ドメインを定義し、この機能を使用してください。
以下の例では、country_code データ型を作成し、その型をテーブル定義の中で使用しています。
CREATE DOMAIN country_code char(2) NOT NULL; CREATE TABLE countrylist (id INT4, country country_code);