このトピックでは、テーブルの検査制約を作成する方法について説明します。
help check constraint の [プロパティ] オプションを選択します。[一般] タブに [検査制約] テキスト領域が表示されます。この領域を右クリックして Options Editor を呼び出すと、この領域の外観をカスタマイズできます。この設定は全体に影響します。1 つのテキスト領域で外観を設定すると、すべてのテキスト領域の外観が同じになります。Options Editor には次のタブがあります。
[Editor] タブ [検査制約] 領域のスクロール・バーを指定します。次のいずれかを選択できます。
[Vertical] − デフォルトでは未選択。
[Horizontal] − デフォルトで選択。
[タブ] タブ タブとインデントの領域の大きさを指定します。コードのカッコのインデントなどの自動インデントも設定できます。
[Format] タブ テキスト領域に表示される構文のフォント・サイズと色を変更します。次の項目を変更できます。
テキストの選択
テキスト
キーワード
コメント
公式のコメント
数
文字列
オープン文字列
演算子
句読表記
ブレーク・ポイントのマージン
HTML 要素名
HTML 属性名
HTML 属性値
HTML コメント
HTML タグ・デリミタ
HTML 演算子
[出力] タブ テキスト領域の構文を出力するときのフォント・サイズを指定します。ヘッダとフッタに表示する情報も指定できます。
テーブルの検査制約の作成
テーブルで [検査制約] フォルダを選択します。
[ファイル] − [新規作成] − [検査制約] を選択します。
[新しい検査制約のプロパティ] ダイアログ・ボックスが表示されます。
制約の名前を入力します。
[検査制約] ボックスに制約のテキストを入力します。検査制約のテキストによって、テーブルに挿入する値が満たさなければならない検索条件が指定されます。
カラムを選択して、検査制約テキストに組み込むこともできます。選択するには、カラムのボタンをクリックしてカラム・リストのダイアログを表示します。
[適用] をクリックします。
[検査制約] フォルダを選択します。右ウィンドウ枠で、[検査制約の追加] アイコンをダブルクリックします。
このダイアログには、検査制約の定義に使用できるカラムの一覧が示されます。
検査制約を宣言すると、ユーザがテーブル内のカラムに挿入する値を制限できます。検査制約は、限定された、特定の範囲の値を検査するアプリケーションに便利です。検査制約は、テーブルに挿入される前にすべての値が満たさなければならない search_condition を指定します。search_condition には、次のものが含まれます。
in で指定される定数式のリスト。
between で指定される定数式の範囲。
like で指定される条件のセット。ワイルドカード文字が含まれる場合がある。
式は、算術演算と Transact-SQL 組み込み関数を含むことができます。search_condition には、サブクエリ、set 関数指定、またはターゲット指定を含めることはできません。
たとえば、次の文は、特定の値だけを pub_id カラムに入力できるようにします。
create table my_new_publishers
(pub_id char(4)
check (pub_id in ("1389", "0736", "0877",
"1622", "1756")
or pub_id like "99[0-9][0-9]"),
pub_name varchar(40),
city varchar(20),
state char(2))
カラムレベルの検査制約は、制約が定義されているカラムだけを参照できます。テーブル内の他のカラムは参照できません。テーブルレベルの検査制約は、テーブル内のどのカラムでも参照できます。create table は 1 つのカラム定義で、複数の検査制約の使用を許可します。
検査制約はカラム定義を上書きしないので、カラム定義が null の使用を許可する場合、null 値の使用を許可しない検査制約を使用することはできません。null 値の使用を許可するカラムで検査制約を宣言すると、NULL が search_condition に含まれていなくても、暗黙的または明示的にカラムに NULL を挿入できます。たとえば、null 値の使用を許可するテーブル・カラムに次のような検査制約を定義するとします。
check (pub_id in ("1389", "0736", "0877", "1622", "1756"))
この場合は、そのカラムに NULL を挿入できます。次の式は常に true に評価されるため、カラム定義は検査制約を上書きします。
col_name != null
ダイアログには、テーブルに含まれているカラムのリストが表示されます。検査制約の定義に含める必要のあるカラムを選択できます。