2010-09-28 66 views
8

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

请参见:
http://sqlblog.com/blogs/hugo_kornelis/archive/2007/03/29/can-you-trust-your-constraints.aspx

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

回答

4
select * 
    from sys.check_constraints 
    where is_not_trusted = 1 

select * 
    from sys.foreign_keys 
    where is_not_trusted = 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?'