検査制約の作成

このトピックでは、テーブルの検査制約を作成する方法について説明します。

help check constraint の [プロパティ] オプションを選択します。[一般] タブに [検査制約] テキスト領域が表示されます。この領域を右クリックして Options Editor を呼び出すと、この領域の外観をカスタマイズできます。この設定は全体に影響します。1 つのテキスト領域で外観を設定すると、すべてのテキスト領域の外観が同じになります。Options Editor には次のタブがあります。

Stepsテーブルの検査制約の作成

  1. テーブルで [検査制約] フォルダを選択します。

  2. [ファイル] − [新規作成] − [検査制約] を選択します。

  3. [新しい検査制約のプロパティ] ダイアログ・ボックスが表示されます。

  4. 制約の名前を入力します。

  5. [検査制約] ボックスに制約のテキストを入力します。検査制約のテキストによって、テーブルに挿入する値が満たさなければならない検索条件が指定されます。

  6. カラムを選択して、検査制約テキストに組み込むこともできます。選択するには、カラムのボタンをクリックしてカラム・リストのダイアログを表示します。

  7. [適用] をクリックします。

ショートカット

[検査制約] フォルダを選択します。右ウィンドウ枠で、[検査制約の追加] アイコンをダブルクリックします。

このダイアログには、検査制約の定義に使用できるカラムの一覧が示されます。

検査制約を宣言すると、ユーザがテーブル内のカラムに挿入する値を制限できます。検査制約は、限定された、特定の範囲の値を検査するアプリケーションに便利です。検査制約は、テーブルに挿入される前にすべての値が満たさなければならない search_condition を指定します。search_condition には、次のものが含まれます。

式は、算術演算と 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  

ダイアログには、テーブルに含まれているカラムのリストが表示されます。検査制約の定義に含める必要のあるカラムを選択できます。