2010-09-28 6 views
8

Ich habe gerade zu meinem Erstaunen gelernt, dass Fremdschlüsseleinschränkungen nicht vertrauenswürdig sind. Dies tritt auf, wenn eine Einschränkung mithilfe von WITH NOCHECK hinzugefügt wird. Wenn eine Einschränkung nicht vertrauenswürdig ist, wird sie vom Abfrageanalysator nicht für die Abfrageplangenerierung verwendet.Nicht vertrauenswürdige Einschränkungen

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

Meine Frage ist. Wenn eine Constraint nicht vertrauenswürdig ist, gibt es eine Eigenschaft für die Constraint, die ich untersuchen kann, die mir das sagt? Ich könnte prüfen, ob die Einschränkung mit WITH NOCHECK hinzugefügt wurde, aber gibt es andere Möglichkeiten, wie eine Einschränkung als nicht vertrauenswürdig markiert werden kann?

Antwort

4
select * 
    from sys.check_constraints 
    where is_not_trusted = 1 

select * 
    from sys.foreign_keys 
    where is_not_trusted = 1 
1

Ja there is a property on the constraint zugänglich über die OBJECTPROPERTY Funktion.

SELECT 
    CASE WHEN OBJECTPROPERTY(OBJECT_ID('FK_TIMECARD_EMPLOYEEID'), 'CnstIsNotTrusted') = 1 
     THEN 'NO' 
     ELSE 'YES' 
     END AS 'IsTrustWorthy?' 
Verwandte Themen