ALTER TABLE文でのCHECK制約の使用には、次のルールが適用されます。
- 次の表で、ADDおよびMODIFYのルールについて説明します。
形式 column_nameの条件 ADD column_name CHECK (boolean_condition) まだ制約がない MODIFY すでに制約がある 各ALTER TABLEリクエストに対してCHECK変更は1つしか実行できません。また、1つのALTER TABLEリクエストの中ではCHECKと非CHECK変更を混在させることはできません。 - 名前なしの列レベルのCHECK制約すべてをcolumn_nameから削除する場合:
ALTER TABLE table_name DROP column_name CHECK
- 名前なしのテーブル レベルのCHECK制約すべてをtable nameから削除する場合:
ALTER TABLE table_name DROP CHECK
- 名前付きCHECK制約を削除するには、次の任意のの文を使用します。
DROP CONSTRAINT name CHECK DROP CONSTRAINT name
- 次の形式はnameという制約がすでにテーブルに存在している場合にのみ有効です。
MODIFY CONSTRAINT name CHECK (search condition)
また、この形式は、列定義の一部として定義されている、名前付きの制約にも適用されます。それらの制約は、名前付きのテーブル レベルの制約として扱われるからです。
- 最高のシステム パフォーマンスを確保するため、テーブルに定義できるテーブル レベルの制約は100個に限定されます。
テーブル レベル、列レベル、およびビューに対するWITH CHECK制約の組み合わせによっては、INSERTおよびUPDATEリクエストのための制約式が大きくなりすぎて、構文解析できないことがあります。
- CHECK制約は、グローバル一時テーブルではサポートされません。
- 次の表で、ALTER TABLEを使用した制約の追加および削除について詳しく説明します。
実行する文 追加/削除するテーブル レベルの名前なしのCHECK制約の数 ALTER TABLE … DROP CHECK すべて その他 制約の種類に関係なく、ALTER TABLEリクエストにつき1つ。 - CHECK制約をLOB列に対して定義することができず、LOB列を参照することもできない。