CHECK制約

カラムにCHECK制約を設定した場合、格納される値が条件に反していないかどうかチェックすることができます。書式は次の通りです。

CREATE TABLE テーブル名(カラム名 CHECK(条件式), ...);

CHECKの後に条件式を記述します。INSERT文などでデータを追加する時に、対象のカラムの値が条件式を満たしているかチェックします。また下記の書式も使用できます。

CREATE TABLE テーブル名(カラム名1, カラム名2, ... ,
  CHECK(条件式));

カラムに対して直接CHECKを指定する代わりににCHECK(条件式)の形式で記述します。

具体的には次のように記述します。

create table product(id integer check(id > 0), name text);

サンプル

では実際に試してみます。

p13-1

「product」テーブルを作成し、「price」カラムにCHECK制約を設定しました。条件式は「price」カラムの値が0以上です。

ではデータをいくつか追加してみます。

p13-2

「price」カラムにはCHECK制約が設定されています。条件を満たさない値を格納しようとする「SQL error: constraint failed」というエラー表示がされます。