我有以下T-SQL架构。我遇到的问题是Download
表上的检查约束不起作用。我仍然可以在该表中插入包含NULL
和ProductId
的{{1}}值的记录。为什么会这样?
我希望CategoryId
和ProductId
列都允许CategoryId
个值,但对于任何给定的记录,只允许将其中一个设置为NULL
,其他需要是NULL
或Category
表的相应ID。
Product
答案 0 :(得分:7)
使用:
CONSTRAINT chk_ReferencesCategoryOrProduct CHECK (ProductID IS NOT NULL
OR CategoryId IS NOT NULL)
NULL
不是一个值 - 它是缺少值的占位符。这就是为什么你需要使用特定的语法来检查它。