查询Microsoft SQL Server 2012 70-461一书

时间:2013-09-01 09:42:42

标签: sql-server tsql check-constraint

书中的一个问题是:

  

测试中的检查约束CHK_Products_unitprice   Production.Products表使用您使用的相同逻辑   在第2课练习中。尝试插入一个全部有效的新行   列,但使用-10的负单位价格。放下支票   约束。重试插入。尝试添加检查约束   进入表格。更新插入的行,使其具有正数   单价。现在尝试将检查约束添加回表中。   如果,您是否能够将检查约束添加回表中   没有行?为什么呢?

我很困惑它在问什么?当然,当所有行都破坏约束时,你应该能够添加一个constarint吗?

由于

1 个答案:

答案 0 :(得分:1)

基本上这只是一种说法,如果没有任何现有记录会使该约束失败,你只能在表中添加一个检查约束。

在这种情况下,您有一个检查约束,表示单价必须为正数。这似乎是明智的,否则你会付钱给人们拿产品!

因此,如果表中的所有单价都是正数,则可以添加约束。但是,如果一个或多个单位价格为负数,SQL Server将不允许您添加约束(因为您基本上说"我们知道这对于所有数据都是正确的"关于某些内容不是真的。)

本书中问题的最后一点是询问,如果表中没有数据行,您是否能够添加约束。这与询问是否可以添加约束条件相同,如果它与现有数据不冲突,我们已经知道答案。