不受信任的约束

时间:2010-09-28 14:21:12

标签: sql-server data-integrity

我惊讶地发现,外键约束可能是不可信的。使用WITH NOCHECK添加约束时会发生这种情况。当约束不受信任时,查询分析器不会将其用于生成查询计划。

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

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

2 个答案:

答案 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?'