Създаване и редактиране на ограничения CHECK Microsoft Docs

Ограниченията CHECK могат да бъдат създадени като част от дефиницията на таблицата, когато таблицата е създадена. Ако таблицата вече съществува, можете да добавите ограничение CHECK. Таблиците и колоните могат да съдържат множество ограничения CHECK.

Ако ограничението CHECK вече съществува, можете да го редактирате или изтриете. Например, може да искате да промените израза, използван в ограничение CHECK в колона на таблица.

Забележка

За да промените ограничение CHECK, първо трябва да изтриете съществуващото ограничение CHECK и да го създадете отново с нова дефиниция.

Следният пример на Transact-SQL създава таблица и след това променя тази таблица чрез добавяне на ограничение CHECK в колоната CreditRating.

Премахнете ограниченията CHECK, за да премахнете ограниченията върху приемливите стойности на данни в колоната или колоните, включени в израза на ограничението.

За създаване на ограничение CHECK по време на създаване на таблица

За да създадете ограничение CHECK на съществуваща таблица

За да премахнете ограничението CHECK

Принудително налагане на ограничение CHECK с опцията WITH NOCHECK

Когато добавяте ограничение CHECK към съществуваща таблица, ограничението CHECK може да се приложи само към нови данни или към съществуващи данни. По подразбиране ограничението CHECK се прилага както за съществуващи данни, така и за нови данни. Опцията WITH NOCHECK на оператора ALTER TABLE се използва за прилагане на новото ограничение само към новодобавени данни. Тази опция е полезна, когато съществуващите данни вече съответстват на ново ограничение CHECK или когато бизнес правило изисква ограничението да бъде наложено от сега нататък.

Например едно старо ограничение може да изисква не повече от петцифрени пощенски кодове, докато ново ограничение може да изисква деветцифрени пощенски кодове. Старите данни с 5-цифрени пощенски кодове са все още валидни и ще съществуват едновременно с новите данни, които съдържат 9-цифрени пощенски кодове. Следователно само нови данни трябва да бъдат тествани спрямо новото ограничение.

Трябва обаче да се внимава, когато се добавят ограничения без валидиране на съществуващите данни, тъй като това не използва контролите на Database Engine за налагане на правила за интегритет на таблици.

За да избегнете проверка на съществуващи данни при създаване на ограничение CHECK

Деактивиране на ограниченията CHECK

Възможно е да забраните ограниченията CHECK при извършване на определени операции, като операции INSERT, операции UPDATE и операции за обработка на репликация.

Операции INSERT и UPDATE

Деактивирането на ограничението CHECK позволява данните в таблицата да бъдат модифицирани, без да се проверяват спрямо ограничението. Деактивирайте ограничението CHECK на операторите INSERT и UPDATE, ако нови данни биха нарушили ограничението или ако ограничението трябва да се прилага само към данни, които вече са в базата данни.

Деактивирайте ограничението CHECK по време на репликация, ако ограничението се отнася само за основната база данни. Репликацията на таблица копира дефиницията на таблицата и данните от изходната база данни в целевата база данни. Обикновено, но не непременно, тези две бази данни се намират на отделни сървъри. Ако ограниченията CHECK, които се прилагат само към основната база данни, не са деактивирани, те могат да създаватненужно възпрепятстване на въвеждането на нова информация в целевата база данни. За повече информация вижте Управление на ограничения, идентификатори и тригери с опцията „НЕ ЗА РЕПЛИКАЦИЯ“.

За да деактивирате ограничението CHECK за операторите INSERT и UPDATE

За да деактивирате ограничението CHECK при извършване на репликация

За информация относно ограниченията ПРОВЕРЕТЕ