CREATE DOMAIN name [AS] data_type [ DEFAULT expression ] [ constraint [ ... ] ] ここでのconstraintは、以下の通りです。 [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK (expression) }
CREATE DOMAIN を実行すると、ユーザは新しいデータドメインを登録することができます。 ドメインを定義したユーザが、その所有者となります。
スキーマ名が付けられている場合 (たとえば、CREATE DOMAIN myschema.mydomain ...)、ドメインは指定されたスキーマで作成されます。 付けられていなければ、そのドメインは現在のスキーマで作成されます。 ドメイン名は、そのスキーマ内に存在するデータ型およびドメインの間で、一意である必要があります。
ドメインを使用すると、テーブル間で共通なフィールドをメンテナンスのために 1 箇所にまとめることができ、便利です。 たとえば、E-mail アドレスの列が複数のテーブルで使用されていて、すべて同じプロパティを持っている場合があります。 各テーブルに個別に制約を設定するよりも、ドメインを定義し、この機能を使用してください。
作成するドメインの名前です (スキーマ修飾名でも可)。
ドメインの基礎をなすデータ型です。 これには、配列指定子が含まれる場合があります。
DEFAULT 句を使用すると、ドメインデータ型の列にデフォルト値を指定できます。 その値は、任意の無変数式です (ただし、副 select は許可されません)。 デフォルト式のデータ型は、そのドメインのデータ型と一致する必要があります。 デフォルト値が指定されない場合、デフォルト値はNULL値となります。
デフォルト式は、その列に値が指定されない、全ての挿入操作において使用されます。 デフォルト値が特定の列に定義された場合は、ドメインに関連したデフォルト値は上書きされます。 反対に、基礎となるデータ型に関連したデフォルト値は、ドメインのデフォルト値によって上書きされます。
省略可能な制約の名前です。 指定されなければ、システムが名前を生成します。
このドメインの値として NULL を使用できません。
このドメインの値として NULL を使用できます。これがデフォルトです。
この句は非標準的な SQL データベースとの互換性のためだけに使用可能です。 新しいアプリケーションでこれを使用しないで下さい。
CHECK 句は、整合性制約やドメインの値が満たさなければならない試験を指定します。 各制約は、Boolean型の結果を生成する式である必要があります。 試験される値を参照するには、VALUE という名前を使用しなければなりません。
現時点では、CHECK 式には、副問い合わせを含めることはできず、VALUE以外の変数を参照することもできません。