Contraintes non trustées

Une contrainte CHECK est marque comme étant digne de confiance si elle a été créée avec l’option WITH CHECK (valeur par défaut), c’est-à-dire qu’elle vérifie les données existantes dans la table à la création. Une contrainte marquée comme non digne de confiance ne pourra pas être utilisée par l’optimiseur pour éliminer certains cas dans la recherche. Cela vaut donc la peine de vérifier que vos contraintes sont dignes de confiance.
Voici une requête qui liste toutes les contraintes CHECK de votre base de données qui ne sont pas dignes de confiance :

SELECT
    OBJECT_NAME(parent_object_id) AS NomTable,
    name AS NomContrainte
FROM sys.objects
WHERE type_desc = 'CHECK_CONSTRAINT'
AND OBJECTPROPERTY([object_id], 'CnstIsNotTrusted') = 1
ORDER BY NomTable, NomContrainte;

Si vous voulez les rendre dignes de confiance, vous pouvez utiliser une instruction comme celle qui suit :

ALTER TABLE CDRRating WITH CHECK CHECK CONSTRAINT NomDeLaContrainte;
ALTER TABLE CDRRating WITH CHECK CHECK CONSTRAINT ALL; -- pour toutes les contraintes de la table

Laisser un commentaire