Разница между WITH CHECK и WITH NOCHECK при добавлении ограничений в SQL Server заключается в том, как происходит проверка существующих данных. 13
WITH CHECK обеспечивает проверку, согласуются ли с новым ограничением все существующие записи в таблице. 1 Если данные удовлетворяют новым условиям, ограничение вступает в силу и становится обязательным для новых записей. 1
WITH NOCHECK, в свою очередь, добавляет ограничение без проверки уже имеющихся данных. 1 Это удобно, когда известно, что некоторые записи не соответствуют вновь установленным условиям, но исправление данных заложено в планы на будущее, либо важно быстро создать ограничение. 1
Использование WITH NOCHECK не рекомендуется, так как последующие обновления, возможно, не будут выполняться для строки, не согласующейся с ограничением. 4 Ограничения, добавленные с помощью WITH NOCHECK, считаются недоверенными, что может затруднить оптимизацию запросов. 1
По умолчанию для новых ограничений предполагается условие WITH CHECK, а для повторно включенных ограничений — WITH NOCHECK. 2