sql 约束Check中使用Case函数

匿名 (未验证) 提交于 2019-12-02 23:26:52

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 )

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!