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 に答える