9

令我惊讶的是,我刚刚了解到外键约束可能是不可信的。当使用添加约束时会发生这种情况WITH NOCHECK。当约束不受信任时,查询分析器不会使用它来生成查询计划。

请参阅:
https ://sqlserverfast.com/blog/hugo/2007/03/can-you-trust-your-constraints/

我的问题是这个。当约束不受信任时,我可以检查约束上的属性来告诉我这一点吗?我想我可以检查是否使用 WITH NOCHECK 添加了约束,但是还有其他方法可以将约束标记为不受信任吗?

4

2 回答 2

5
select *
    from sys.check_constraints
    where is_not_trusted = 1

select * 
    from sys.foreign_keys
    where is_not_trusted = 1
于 2010-09-28T14:27:03.627 回答
1

的,约束上有一个属性可以通过该OBJECTPROPERTY函数访问。

SELECT 
    CASE WHEN OBJECTPROPERTY(OBJECT_ID('FK_TIMECARD_EMPLOYEEID'), 'CnstIsNotTrusted') = 1
        THEN 'NO' 
        ELSE 'YES' 
        END AS 'IsTrustWorthy?'
于 2010-09-28T14:28:56.310 回答