Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
データベース内にドメインを作成します。
CREATE { DOMAIN | DATATYPE } [ AS ] domain-name data-type [ [ NOT ] NULL ] [ DEFAULT default-value ] [ CHECK ( condition ) ] [ AS USER user-name ]
domain-name : identifier
data-type : built-in data type, with precision and scale
DOMAIN | DATATYPE 句 CREATE DOMAIN は SQL/2008 標準で定義されているため、CREATE DATATYPE ではなく、CREATE DOMAIN を使用することをおすすめします。
NULL 句 この句を使用すると、ドメインに NULL 入力可かどうかを指定できます。ドメインを使用してカラムを定義する場合、NULL 入力可かどうかは次のようにして決まります。
カラム定義で指定された Null 入力可能。
ドメイン定義で指定された Null 入力可能。
NULL 入力属性がカラム定義とドメイン定義のどちらでも明示的に指定されていない場合、allow_nulls_by_default オプションの設定が使用されます。
CHECK 句 検査制約を使用してドメインを作成する場合は、検査制約の検索条件の中に @ 記号のプレフィクスを持つ変数名を使用できます。データ型をカラムの定義内で使う場合、このような変数をカラム名に置き換えます。これにより、そのドメインで定義された各テーブルにドメインの検査制約を適用することができます。
AS USER 句 オブジェクトの所有者を指定します。
ドメインは、必要に応じて精度と小数点以下の桁数を含めた組み込みデータ型のエイリアスです。データベース内の使いやすさを改善し、一貫性を高めます。
ドメインはデータベース内のオブジェクトです。名前を付けるには識別子のルールに従います。ドメインは、大文字と小文字を区別しません。組み込みデータ型名の場合と同じです。
データ型を作成するユーザは、自動的にそのデータ型の所有者となります。CREATE DATATYPE 文の中では、所有者を指定できません。ドメイン名はユニークにします。また、すべてのユーザはプレフィクスとして所有者を使わなくてもデータ型にアクセスできます。
ドメインは、CHECK 条件と DEFAULT 値を持つことができ、ユーザ側でそのデータ型が NULL 値を使えるかどうかを指定できます。これらの条件と値は、ドメインで定義するカラムによって継承されます。カラム定義で明示的に指定された条件または値は、ドメイン型に指定された条件または値を上書きします。
所有するドメインを作成するには、CREATE DATATYPE または CREATE ANY OBJECT システム権限が必要です。他のユーザが所有するドメインは作成できません。
オートコミット。
SQL/2008 ドメインのサポートは、SQL/2008 標準のオプションの SQL 言語機能 F251 です。
次の文は、35 文字の文字列を保持し、NULL が使用できる address という名前のドメインを作成します。
CREATE DOMAIN address CHAR( 35 ) NULL;
次の文は、NULL は使用できず、デフォルトでオートインクリメントに設定される ID という名前のドメインを作成します。
CREATE DOMAIN ID INT NOT NULL DEFAULT AUTOINCREMENT;
次の文は、検査制約で正規表現を使用する PhoneNumber という名前のドメインを作成します。これは、文字列が、ダッシュまたは空白で区切られた 3 桁の市外局番、3 桁の局番、4 桁の電話番号で構成される、正しくフォーマットされた 12 文字の北米地域の電話番号であることを確認するためのものです。
CREATE DOMAIN PhoneNumber CHAR(12) NULL CHECK( @PhoneNumber REGEXP '([2-9][0-9]{2}-[2-9][0-9]{2}-[0-9]{4})|([2-9][0-9]{2}\s[2-9][0-9]{2}\s[0-9]{4})');
従業員名と住所をそれぞれ格納するカラムを含んだデータベースがあるとします。この場合、次のようなドメインを定義します。
CREATE DOMAIN persons_name CHAR(30) CREATE DOMAIN street_address CHAR(35);
こうして定義されたドメインは、既存のデータ型と同様に使用できます。次のようにしてテーブルを定義できます。次の文を実行するには、CREATE TABLE 権限が必要です。
CREATE TABLE myCustomers ( ID INT DEFAULT AUTOINCREMENT PRIMARY KEY, Name persons_name, Street street_address);
前述の例では、テーブルのプライマリキーが整数型であることを指定しています。実際に、多数のテーブルで同じような識別子を必要とする場合があります。こうしたアプリケーションでは、整数型を指定する代わりに、識別子ドメインを作成すると大変便利です。
ドメインを作成するときにデフォルト値や検査制約を設定し、このドメインが割り当てられたカラムに不適切な値が入力されないように設定できます。
整数はテーブル識別子によく使われます。識別子をユニークにするには、正の整数を使うことをおすすめします。このような識別子はさまざまなテーブルで使用できるので、次の例に示すようなドメインを作成するとよいでしょう。
CREATE DOMAIN identifier UNSIGNED INT DEFAULT AUTOINCREMENT;
この定義を使用して、上記の Customers テーブルの定義を書き換えることができます。
CREATE TABLE Customers2 ( ID identifier PRIMARY KEY, Name persons_name, Street street_address );