Sql server 检查约束表达式错误
我试图使用SQL Server Management Studio 2012的向导创建一个检查约束,仅当元组未启用时才允许字段为空,但验证约束时出现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
错误
我尝试使用的表达式是:
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。不过还是要感谢你的洞察力!