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;