CHECK 约束用于限制列中的值的范围。
如果对单个列定义CHECK约束,那么该列只允许特定的值。
如果对一个表定义CHECK约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
CREATE TABLE 时的SQL CHECK 约束
在"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)
)
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 CHECK约束
当表已被创建时,如需在"P_Id"列创建CHECK约束,请使用下面的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')
参考:
https://www.yuque.com/docs/share/03d288fa-8dcd-4607-8a2c-8f7eed3835e6