SQLのチェック制約
CHECK制約は、列に配置することができる値の範囲を制限するために使用されます。
あなたは、単一の列にCHECK制約を定義した場合には、この列の特定の値のみを許可します。
あなたがテーブルの上にCHECK制約を定義した場合には、行の他の列の値に基づいて、特定の列の値を制限することができます。
CREATE TABLE上のSQLのチェック制約
次のSQLは、上のチェック制約を作成する"P_Id"とき列"Persons"テーブルが作成されます。 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')
)
ALTER TABLEにSQLのチェック制約
上のチェック制約を作成するには"P_Id"テーブルが既に作成されている列は、次の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制約をドロップします
CHECK制約を削除するには、次のSQLを使用します。
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
MySQL:
ALTER TABLE Persons
DROP CHECK chk_Person