SQL Server约束“不受信任”

时间:2016-04-26 09:26:38

标签: sql-server

我最近听到“不信任”一词:

  

SQL Server会将约束标记为“不受信任”。

有没有人可以解释一下这是什么意思?我知道这个问题有点模糊,但我想知道这是否是微软特有的"术语"或者也被其他关系数据库使用?

2 个答案:

答案 0 :(得分:3)

如果禁用约束然后再次启用而不指定WITH CHECK选项,则SQL Server会将该约束标记为"不信任"因为它不再依赖于约束的存在来保证数据与约束条件一致。这会导致为执行计划而忽略约束,因此最佳做法是在重新启用约束时始终使用WITH CHECK。

答案 1 :(得分:0)

每次MSSQL都无法检查约束:

  1. 如果禁用约束并启用而不检查:
    • Alter table nocheck constraint constraintname
    • Alter table with nocheck check constraint constraintname
  2. 如果您创建约束禁用:
    • Alter table with nocheck add constraint ...
  3. 如果启用约束但存在违反约束的行
  4. 要查看违反约束的行,您可以使用DBCC CHECKCONSTRAINTS