SQL CHECK制約
SQL CHECK 制約
CHECK 制約は、列内の値の範囲を制限するために使用されます。
単一の列に CHECK 制約を定義すると、その列には特定の値のみが許可されます。
テーブルに CHECK 制約を定義すると、その制約は行内の他の列の値に基づいて、特定の列の値を制限します。
CREATE TABLE 時の SQL 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)
)
(
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)
)
(
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 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 CHECK 制約
テーブルが作成された後で、「P_Id」列に CHECK 制約を作成するには、次の SQL を使用します:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (P_Id>0)
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')
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
DROP CONSTRAINT chk_Person
MySQL:
ALTER TABLE Persons
DROP CHECK chk_Person
DROP CHECK chk_Person