Sql-check

提供:Dev Guides
移動先:案内検索

SQL-制約のチェック

CHECK制約により、レコードに入力される値を条件でチェックできます。 条件が偽と評価された場合、レコードは制約に違反しており、テーブルに入力されていません。

たとえば、次のプログラムはCUSTOMERSという新しいテーブルを作成し、5つの列を追加します。 ここでは、18歳未満の顧客を抱えることができないように、AGE列を使用したCHECKを追加します。

CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL CHECK (AGE >= 18),
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

CUSTOMERS表がすでに作成されている場合、AGE列にCHECK制約を追加するには、次のような文を記述します。

ALTER TABLE CUSTOMERS
   MODIFY AGE INT NOT NULL CHECK (AGE >= 18 );

また、同様に複数の列の制約の命名をサポートする次の構文を使用することができます-

ALTER TABLE CUSTOMERS
   ADD CONSTRAINT myCheckConstraint CHECK(AGE >= 18);

チェック制約の削除

CHECK制約を削除するには、次のSQL構文を使用します。 この構文はMySQLでは機能しません。

ALTER TABLE CUSTOMERS
   DROP CONSTRAINT myCheckConstraint;