За да промените ограничение 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 при извършване на репликация
За информация относно ограниченията ПРОВЕРЕТЕ
|