Share via


CHECK 制約の作成

SQL Server 2012 では、SQL Server Management Studio または Transact-SQL を使用してテーブルで CHECK 制約を作成して、1 つ以上の列に入力できるデータ値を指定します。

このトピックの内容

  • 作業を開始する準備:

    セキュリティ

  • 新しい CHECK 制約を作成する方法:

    SQL Server Management Studio

    Transact-SQL

作業を開始する準備

セキュリティ

権限

テーブルに対する ALTER 権限が必要です。

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

新しい CHECK 制約を作成するには

  1. オブジェクト エクスプローラーで、CHECK 制約を追加するテーブルを展開し、[制約] を右クリックして、[新しい制約] をクリックします。

  2. [CHECK 制約] ダイアログ ボックスで、[式] フィールドをクリックして、省略記号 [...] をクリックします。

  3. [CHECK 制約式] ダイアログ ボックスで、CHECK 制約の SQL 式を入力します。 たとえば、Product テーブルの SellEndDate 列への入力を SellStartDate 列の日付と同じか、それよりも後の日付の値または NULL 値に限定するには、次のように入力します。

    SellEndDate >= SellStartDate OR SellEndDate IS NULL
    

    また、zip 列への入力を 5 桁の数値に限定するには、次のように入力します。

    zip LIKE '[0-9][0-9][0-9][0-9][0-9]'
    
    注意

    数値以外の制約値は、必ず単一引用符 (') で囲んでください。

  4. [OK] をクリックします。

  5. [ID] カテゴリでは、CHECK 制約の名前を変更し、制約の説明 (拡張プロパティ) を追加できます。

  6. テーブル デザイナーのカテゴリでは、制約が適用されるタイミングを設定できます。

    目的:

    [はい] を選択するフィールド:

    制約を作成する前に既に存在していたデータで制約をテストする

    [作成または有効化するときに既存データを確認]

    このテーブルでレプリケーション操作が発生するたびに制約を適用する

    [レプリケーションに対して適用]

    このテーブルの行を挿入または更新するたびに制約を適用する

    [INSERT および UPDATE に適用]

  7. [閉じる] をクリックします。

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

新しい CHECK 制約を作成するには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。

    ALTER TABLE dbo.DocExc 
       ADD ColumnD int NULL 
       CONSTRAINT CHK_ColumnD_DocExc 
       CHECK (ColumnD > 10 AND ColumnD < 50);
    GO
    -- Adding values that will pass the check constraint
    INSERT INTO dbo.DocExc (ColumnD) VALUES (49);
    GO
    -- Adding values that will fail the check constraint
    INSERT INTO dbo.DocExc (ColumnD) VALUES (55);
    GO
    

詳細については、「ALTER TABLE (Transact-SQL)」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]