CHECK 约束用于限制列中的值的范围
在Check
中使用Case
函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check
,那么我建议你在看过下面的例子之后也尝试一下在SQL
中使用Check
。
下面我们来举个例子
公司A,这个公司有个规定,女职员的工资必须高于1000块。如果用Check和Case来表现的话,如下所示
CREATE TABLE casetest
(
id INT IDENTITY PRIMARY KEY,
sex CHAR(3) NOT NULL,
salary INT NULL ,CONSTRAINT check_salary CHECK(CASE WHEN sex='女' THEN
CASE WHEN salary>1000 THEN 1 ELSE 0 END
ELSE 1 END =1)
)---constaraint前面的都好必须有 ---check布尔 0为false,1为true
INSERT dbo.casetest
( sex, salary )
VALUES ( '女', -- sex - char(3)
200 -- salary - int
)
SELECT * FROM dbo.casetest
如果单纯使用Check,如下所示
CONSTRAINT check_salary CHECK
( sex = '2' AND salary > 1000 )
女职员的条件倒是符合了,男职员就无法输入了。