Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 添加约束时不确定WITH CHECK子句_Sql Server_Tsql_Check Constraints - Fatal编程技术网

Sql server 添加约束时不确定WITH CHECK子句

Sql server 添加约束时不确定WITH CHECK子句,sql-server,tsql,check-constraints,Sql Server,Tsql,Check Constraints,我正在尝试添加检查约束 首先是我 ALTER TABLE [Production].[Products] WITH CHECK ADD CONSTRAINT [CHK_Products_unitprice] CHECK (([unitprice]>=(0))) GO 它与消息一起失败 味精547,第16级,状态0,第1行 ALTER TABLE语句与CHECK约束“CHK_Products_unitprice”冲突。冲突发生在数据库“TSQL2012”表“Production.P

我正在尝试添加检查约束

首先是我

ALTER TABLE [Production].[Products]  WITH CHECK 
ADD  CONSTRAINT [CHK_Products_unitprice] CHECK  (([unitprice]>=(0)))
GO
它与消息一起失败

味精547,第16级,状态0,第1行
ALTER TABLE语句与CHECK约束“CHK_Products_unitprice”冲突。冲突发生在数据库“TSQL2012”表“Production.Products”列“unitprice”中

然后,我尝试在没有“WITH CHECK”选项的情况下添加约束,但仍然会出现上述错误


那么“with check”选项的意义是什么呢?

创建新检查约束的默认选项是
with check
选项,该选项将读取和计算现有值,如果发现冲突,则会导致
ALTER
失败

如果需要部署忽略现有错误值的检查约束,并且您了解其缺点(请参见下文),则可以将
与NOCHECK
选项一起使用,这是启用以前禁用的约束时的默认设置

详情请参阅:

有支票|无支票

指定是否对表中的数据进行验证 新添加或重新启用的外键或检查约束。如果不是 指定,对于新约束假定为带检查,而不带检查 假定为重新启用的约束

如果不想验证新的检查或外键约束 针对现有数据,与NOCHECK一起使用。我们不建议这样做 除了极少数情况外,这是一个例外。新约束将在中求值 所有后续数据更新。任何被抑制的约束冲突 在添加约束时使用NOCHECK可能会导致将来的更新 如果它们使用不符合 约束

查询优化器不考虑定义的约束 没有检查。在重新启用这些约束之前,将忽略这些约束 通过使用ALTERTABLE TABLE和CHECK约束ALL


创建新检查约束的默认选项是
WITH check
选项,该选项将读取和计算现有值,如果发现冲突,则会导致
ALTER
失败

如果需要部署忽略现有错误值的检查约束,并且您了解其缺点(请参见下文),则可以将
与NOCHECK
选项一起使用,这是启用以前禁用的约束时的默认设置

详情请参阅:

有支票|无支票

指定是否对表中的数据进行验证 新添加或重新启用的外键或检查约束。如果不是 指定,对于新约束假定为带检查,而不带检查 假定为重新启用的约束

如果不想验证新的检查或外键约束 针对现有数据,与NOCHECK一起使用。我们不建议这样做 除了极少数情况外,这是一个例外。新约束将在中求值 所有后续数据更新。任何被抑制的约束冲突 在添加约束时使用NOCHECK可能会导致将来的更新 如果它们使用不符合 约束

查询优化器不考虑定义的约束 没有检查。在重新启用这些约束之前,将忽略这些约束 通过使用ALTERTABLE TABLE和CHECK约束ALL


您有一个冲突:即,一个不满足约束条件的值:Pure和Simple。我看不到有效的问题。很抱歉,我认为使用“With check”选项的目的是在现有行无效时触发错误。如果不允许,它将允许约束并仅将其应用于后续插入否,它将在重新启用禁用的约束时强制重新检查。好的,谢谢,因此我假设外键的with check选项也是如此。您有一个冲突:即,e一个不符合约束的值:Pure and Simple。我看不到有效的问题。很抱歉,我认为使用“With check”选项的目的是在现有行无效时触发错误。如果不允许,它将允许约束并仅将其应用于后续插入否,它将在重新启用禁用的约束时强制重新检查。好的,谢谢,因此我假设外键的with check选项也是如此。