2010-09-28 93 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?'