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を実行する必要がある。
以上