SQL CHECK 約束
SQL CHECK 約束
CHECK 約束用於限制可以放置在列中的值的範圍。
如果為一個列定義 CHECK 約束,則該列只允許特定值。
如果為一個表定義 CHECK 約束,則可以根據行中其他列的值來限制某些列中的值。
SQL 在 CREATE TABLE 上建立 CHECK
以下 SQL 在建立 "Persons" 表時,在 "Age" 列上建立一個 CHECK 約束。 CHECK 約束確保一個人的年齡必須是 18 歲或以上。
MySQL
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);SQL Server / Oracle / MS Access
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);要允許命名 CHECK 約束,以及為多個列定義 CHECK 約束,請使用以下 SQL 語法
MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);SQL 在 ALTER TABLE 上建立 CHECK
要在表已建立後,為 "Age" 列建立 CHECK 約束,請使用以下 SQL
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD CHECK (Age>=18);要允許命名 CHECK 約束,以及為多個列定義 CHECK 約束,請使用以下 SQL 語法
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');DROP a CHECK Constraint (刪除 CHECK 約束)
要刪除 CHECK 約束,請使用以下 SQL
SQL Server / Oracle / MS Access
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;MySQL
ALTER TABLE Persons
DROP CHECK CHK_PersonAge;