T-SQL:CHECK约束不起作用

时间:2011-07-04 03:55:49

标签: sql sql-server tsql check-constraints

我有以下T-SQL架构。我遇到的问题是Download表上的检查约束不起作用。我仍然可以在该表中插入包含NULLProductId的{​​{1}}值的记录。为什么会这样?

我希望CategoryIdProductId列都允许CategoryId个值,但对于任何给定的记录,只允许将其中一个设置为NULL,其他需要是NULLCategory表的相应ID。

Product

1 个答案:

答案 0 :(得分:7)

使用:

CONSTRAINT chk_ReferencesCategoryOrProduct CHECK (ProductID IS NOT NULL 
                                               OR CategoryId IS NOT NULL)

NULL不是一个值 - 它是缺少值的占位符。这就是为什么你需要使用特定的语法来检查它。