Sql server 检查约束表达式错误

Sql server 检查约束表达式错误,sql-server,constraints,check-constraints,Sql Server,Constraints,Check Constraints,我试图使用SQL Server Management Studio 2012的向导创建一个检查约束,仅当元组未启用时才允许字段为空,但验证约束时出现错误 我尝试使用的表达式是: TransactionalMerchantId IS NOT NULL OR (TransactionalMerchantId IS NULL AND Enabled IS false) 我的桌子设计如下: 有人能帮我弄清楚为什么会发生这种情况吗?is仅用于与null进行比较。尝试: [Enabled] = fals

我试图使用SQL Server Management Studio 2012的向导创建一个检查约束,仅当元组未启用时才允许字段为空,但验证约束时出现
错误

我尝试使用的表达式是:

TransactionalMerchantId IS NOT NULL
OR
(TransactionalMerchantId IS NULL AND Enabled IS false)
我的桌子设计如下:


有人能帮我弄清楚为什么会发生这种情况吗?

is
仅用于与
null
进行比较。尝试:

[Enabled] = false

is
仅用于与
null
进行比较。尝试:

[Enabled] = false
尝试:

尝试:


搞定了!忘记SQL Server没有自动将
false
呈现为0。谢谢这件事让我抓狂了好几次。我猜这是因为使用整数类型的查询不容易被错误地编写(通过意外地将整数值计算为布尔值),类似于许多语言将等式与==进行比较,而将赋值与=.进行比较。很好!忘记SQL Server没有自动将
false
呈现为0。谢谢这件事让我抓狂了好几次。我猜这是因为使用整数类型的查询不容易被错误地编写(通过意外地将整数值计算为布尔值),类似于许多语言将等式与==进行比较,而将赋值与=.部分正确,但根据@Jake Heidt的帖子,sql server不理解false或true,只有0或1。不过还是要感谢你的洞察力!部分正确,但根据@Jake Heidt的帖子,sql server不理解false或true,只理解0或1。不过还是要感谢你的洞察力!