Ограничение CHECK ограничивает значения данных, которые могут ввести пользователи в определенный столбец с помощью операторов INSERT и UPDATE. Вы можете применять проверочные ограничения на уровне столбца или таблицы. Ограничения CHECK уровня столбца ограничивают значения, которые могут быть сохранены в этом же столбце. Ограничения CHECK уровня таблицы могут ссылаться на множество столбцов в этой таблице, для перекрестной ссылки и сравнения значений столбцов.
Перед использованием ограничения CHECK учтите следующие факты:
■ Ограничение CHECK проверяет данные каждый раз, когда Вы выполняете операторы INSERT или UPDATE.
■ Ограничение CHECK может быть любым логическим (Булевым) выражением, которое возвращает TRUE или FALSE.
■ Ограничение CHECK не может содержать подзапросы.
■ Один столбец может иметь несколько ограничений CHECK.
■ Ограничение CHECK не может накладываться на столбцы следующих типов: rowversion, text, ntext, или image.
■ Оператор проверки согласованности БД (DBCC) CHECKCONSTRAINTS вернет все строки с данными, которые нарушают ограничение CHECK.
Рассмотрите использование ограничения CHECK, когда:
■ Бизнес логика диктует, что данные, хранимые в столбце, должны входить в определенное множество или диапазон значений.
■ Данные, хранимые в столбце, имеют естественные ограничения на значения, которые они могут содержать.
■ Между столбцами таблицы существуют отношения, которые ограничивают значения столбца, которые он может содержать.
Вы можете создать ограничения CHECK при использовании раздела CONSTRAINTS уровня столбца или уровня таблицы операторов CREATE TABLE или ALTER TABLE. Следующий код демонстрирует использование оператора Transact-SQL, который добавляет ограничение CHECK к таблице HumanResources.EmployeeDepartmentHistoryбазы данныхAdventureWorks. Это ограничение гарантирует, что значение столбца EndDateбольше или равно значения столбца StartDate или является null-значением.
ALTER TABLE [HumanResources].[EmployeeDepartmentHistory] WITH CHECK
CHECK (([EndDate]>=[StartDate] OR [EndDate] IS NULL))
Ограничение уникальности UNIQUE гарантирует, что не может быть двух строк с одинаковыми значениями в столбце. Ограничение UNIQUE полезно, когда у Вас уже есть первичный ключ (PRIMARY KEY), например, номер служащего, но Вы хотите определить другие уникальные столбцы, такие как, например, идентификационный налоговый номер (ИНН) служащего.
Прежде, чем приступить к реализации ограничения UNIQUE, следует рассмотреть следующие факты:
■ В столбце с ограничением UNIQUE может появиться только одно пустое значение.
■ Таблица может иметь множество ограничений UNIQUE, но только одно ограничение PRIMARY KEY.
■ Ограничение UNIQUE реализуется через создание уникального некластерного индекса на указанный столбец или множество столбцов. Всего таких индексов должно быть не более 249.
■ Двигатель БД возвратит ошибку, если Вы создадите ограничение UNIQUE на столбец, который содержит дублирующиеся значения.