检查约束中的括号问题

时间:2012-07-31 00:29:49

标签: sql-server check-constraints

我正在尝试创建以下检查约束。

(
   [Href] IS NOT NULL AND
   [ETag] IS NOT NULL AND
   [UserName] IS NOT NULL AND
   [Password] IS NOT NULL AND
   [UID] IS NOT NULL
)
OR
(
   [Href] IS NULL AND
   [ETag] IS NULL AND
   [UserName] IS NULL AND
   [Password] IS NULL AND
   [UID] IS NULL
)

我可以保存它并且没有错误。但是SSMS删除了两个内括号(这样在开始处只有左括号,在结尾处只有右括号)。

这似乎完全改变了意义。我希望所有这些列都为null或者它们都不为null。有没有理由说SQL Server无法处理这个?

1 个答案:

答案 0 :(得分:6)

SSMS是正确的。不需要括号。

AND的优先级高于SQL中的OR,因此带括号和不带括号的两个版本是等效的。