Ненадежные ограничения - PullRequest
       4

Ненадежные ограничения

9 голосов
/ 28 сентября 2010

К моему удивлению, я только что узнал, что ограничения внешнего ключа нельзя доверять.Это происходит, когда ограничение добавляется с помощью WITH NOCHECK.Когда ограничение не является доверенным, оно не используется анализатором запросов для генерации плана запроса.

См .:
https://sqlserverfast.com/blog/hugo/2007/03/can-you-trust-your-constraints/

У меня такой вопрос.Когда ограничение не является доверенным, есть ли свойство в проверяемом ограничении, которое говорит мне об этом?Я думаю, я мог бы проверить, было ли добавлено ограничение, используя WITH NOCHECK, но есть ли другие способы, с помощью которых ограничение может быть помечено как ненадежное?

Ответы [ 2 ]

5 голосов
/ 28 сентября 2010
select *
    from sys.check_constraints
    where is_not_trusted = 1

select * 
    from sys.foreign_keys
    where is_not_trusted = 1
1 голос
/ 28 сентября 2010

Да есть свойство в ограничении , доступное через функцию OBJECTPROPERTY.

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