SQL CHECK 制約

SQL CHECK 制約

CHECK制約はカラム内の値の範囲を制限するために使用されます。

単一のカラムに対してCHECK制約を定義した場合、そのカラムは特定の値のみを許可します。

表に対してCHECK制約を定義した場合、その制約は特定のカラムに対して値の制限を行います。

SQLのCREATE TABLEにおけるCHECK制約

以下のSQLは、"Persons"テーブルが作成された際に"Id_P"カラムに対してCHECK制約を作成します。CHECK制約は、"Id_P"カラムが0以上の整数のみを含むことを規定します。

MySQL:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>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
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)

ALTER TABLE 上の SQL CHECK 约束

既存のテーブルに対して "Id_P" 列に CHECK 约束を作成する場合、以下の SQL を使用してください:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CHECK (Id_P>0)

CHECK 约束に名前を付けたり、複数の列に対して CHECK 约束を定義する必要がある場合は、以下の SQL 语法を使用してください:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>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