SQL Server (Transact-SQL) CHECK 约束用于确保表列中的所有值都满足指定条件。通过在表上定义 CHECK 约束,它限制了可以为此列输入的值。使用 AND 和 OR 运算符,可以通过以下方式构造 CHECK 约束:根据行中其他列中的值限制某些列中的值。
SQL Server CREATE TABLE CHECK 约束
下面提到的语句创建一个名为 Employee 的表,其中包含五列:EmpID、Name、城市、年龄和薪水,其中对年龄列应用CHECK约束。
CREATE TABLE Employee (
EmpID INT NOT NULL,
Name VARCHAR(255),
City VARCHAR(100),
Age INT CHECK (Age >= 21),
Salary DECIMAL(18,2)
);
或者,也可以按如下方式创建:
CREATE TABLE Employee (
EmpID INT NOT NULL,
Name VARCHAR(255),
City VARCHAR(100),
Age INT,
Salary DECIMAL(18,2),
CHECK (Age >= 21)
);
为 CHECK 约束提供名称,并在多个列上定义 CHECK 约束(例如City 和 Age),可以使用以下语句:
CREATE TABLE Employee (
EmpID INT NOT NULL,
Name VARCHAR(255),
City VARCHAR(100),
Age INT,
Salary DECIMAL(18,2),
CONSTRAINT CHK_Employee CHECK(Age >= 21 AND City = 'London')
);
SQL Server ALTER TABLE CHECK 约束
在上面的示例中,一个名为员工已创建。要对 Age 列强制执行 CHECK 约束,语句如下:
ALTER TABLE Employee
ADD CHECK (Age >= 21);
为 CHECK 约束提供名称,并在多个列上定义 CHECK 约束(比如Age和City),语句如下:
ALTER TABLE Employee
ADD CONSTRAINT CHK_Employee
CHECK (Age >= 21 AND City = 'London');
删除 CHECK约束
删除 从名为Employee的表中进行CHECK约束的CHK_Employee,语句如下:
ALTER TABLE Employee
DROP CONSTRAINT CHK_Employee;