我惊讶地发现,外键约束可能是不可信的。使用WITH NOCHECK
添加约束时会发生这种情况。当约束不受信任时,查询分析器不会将其用于生成查询计划。
请参阅:
https://sqlserverfast.com/blog/hugo/2007/03/can-you-trust-your-constraints/
我的问题是这个。当一个约束是不可信的时,我可以检查的约束上有一个属性告诉我这个吗?我想我可以检查是否使用WITH NOCHECK添加约束,但是还有其他方法可以将约束标记为不可信吗?
答案 0 :(得分:5)
select *
from sys.check_constraints
where is_not_trusted = 1
select *
from sys.foreign_keys
where is_not_trusted = 1
答案 1 :(得分:1)
是there is a property on the constraint可通过OBJECTPROPERTY
功能访问。
SELECT
CASE WHEN OBJECTPROPERTY(OBJECT_ID('FK_TIMECARD_EMPLOYEEID'), 'CnstIsNotTrusted') = 1
THEN 'NO'
ELSE 'YES'
END AS 'IsTrustWorthy?'