CHECK 制約は、列に配置することができる値の範囲を制限するために使用します。
1 つの列に CHECK 制約を定義した場合には、この列には特定の値のみが使用可能になります。
テーブルに CHECK 制約を定義した場合には、特定の列の値を、行内の他の列における値に基づいて制限することができます。
次の SQL は、"Persons" テーブルを作るときに、"P_Id" 列に CHECK 制約を作成します: CHECK 制約は、列 "P_Id" には 0 より大きい整数だけを含まなければならないことを指定します。
MySQL:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
CHECK 制約のネーミングを可能にするため、および複数の列に CHECK 制約を定義するためには、 次の SQL 構文を使用します:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)
テーブルが作成済みだった場合、"P_Id" 列に CHECK 制約を作成するには、次の SQL を使用します:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (P_Id>0)
CHECK 制約のネーミングを可能にするため、および複数の列に CHECK 制約を定義するためには、 次の SQL 構文を使用します:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
CHECK 制約の削除には、次の SQL を使用します:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
MySQL:
ALTER TABLE Persons
DROP CHECK chk_Person