redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

SQL ServerのCHECK制約の設定方法

簡単な入力制限であれば、テーブルにCHECK制約をつける手もあるかなと思い、SQL ServerのCHECK制約の設定方法について調査しました。

SSDT(サーバーエクスプローラー)
  • SSDTは、テーブル定義画面でCHECK 制約を追加できる。
  • CHECK制約の対象カラムは、カラムを選択した時に、CHECK制約がハイライトされる。
  • CHECK制約は、CREATE TABLEのCONSTRAINT句で記述する。
    SQLにALTER TABLEを書いても実行できたが、テーブル定義画面を閉じて開くとCREATE TABLE文に戻ってしまった。
SSDT(オブジェクトエクスプローラー)
  • テーブル定義画面を開く前に、制約だけを開くと、ALTER TABLE形式のSQLが表示される。
SSMS
  • デザイン画面では、CHECK制約は表示されない。
  • 制約を開くと、制約編集用の画面が表示される。
  • 「テーブルをスクリプト化」で、ALTER TABLE形式のSQLが表示される。
  • 制約に対して「制約をスクリプト化」をしてもALTER TABLE形式のSQLが表示される。
Code First(Entity Framework 6.2)
  • CHECK 制約を記述出来ないため、DBを再作成するとCHECK 制約は消える。
  • CHECK 制約を設定したい場合は、DBInitilizerクラスで、DB再作成後にALTER TABLE形式のSQLを実行する必要がある。

以上