2010-09-28 12 views
8

मैंने अभी आश्चर्यचकित किया है कि विदेशी कुंजी बाधाएं गैर-भरोसेमंद हो सकती हैं। यह तब होता है जब WITH NOCHECK का उपयोग करके एक बाधा जोड़ा जाता है। जब कोई बाधा गैर-भरोसेमंद होती है, तो क्वेरी क्वेरी पीढ़ी के लिए क्वेरी विश्लेषक द्वारा इसका उपयोग नहीं किया जाता है।गैर-भरोसेमंद प्रतिबंध

देखें:
http://sqlblog.com/blogs/hugo_kornelis/archive/2007/03/29/can-you-trust-your-constraints.aspx

मेरा प्रश्न यह है। जब कोई बाधा गैर-भरोसेमंद होती है, तो क्या उस बाधा पर एक संपत्ति है जिसका मैं निरीक्षण कर सकता हूं जो मुझे यह बताता है? मुझे लगता है कि मैं यह देखने के लिए जांच सकता हूं कि क्या 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 constraintOBJECTPROPERTY समारोह के माध्यम से सुलभ।

SELECT 
    CASE WHEN OBJECTPROPERTY(OBJECT_ID('FK_TIMECARD_EMPLOYEEID'), 'CnstIsNotTrusted') = 1 
     THEN 'NO' 
     ELSE 'YES' 
     END AS 'IsTrustWorthy?' 
संबंधित मुद्दे