我需要创建一个表检查约束来实现以下目的:
我已经写过这个约束,但只是想知道你是否可以专注于它。我已经正确地实现了这个目标,还是以最好的方式实现
ALTER TABLE MyTable ADD CONSTRAINT [const_name] CHECK
(
(Column1 IS NULL AND Column2 IS NULL) OR
(Column1 IS NOT NULL AND (Column2 IS NOT NULL OR Column2 IS NULL))
)
答案 0 :(得分:2)
更简单的表格,基于您的新规则:
ALTER TABLE MyTable ADD CONSTRAINT [const_name] CHECK
(
(Column2 IS NULL OR Column1 IS NOT NULL)
)
考虑一下 - 如果Column2
是null
,那么我们就不需要断言Column1
了 - 它可以是NULL
,你很高兴
同样,如果Column1
不 NULL
,那么我们不关心Column2
是否NULL
。
我们希望此约束失败的唯一情况是,Column2
不是NULL
但Column1
是 - 上述OR
条件的错误情况