sql 约束Check中使用Case函数

时间:2024-05-26 18:36:26

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 )

女职员的条件倒是符合了,男职员就无法输入了。