Введение в программирование SQL Server. Создание и управление базой данных. Инструменты целостности данных, страница 23

*  Вы хотите загрузить данные, которые не соответствуют ограничению. Позже, вы можете выполнить запрос для изменения данных и включить ограничение.

Отключение ограничения на таблицу не отключает ограничения на другую таблицу, которая ссылается на вашу. Обновление всё ещё может генерировать ошибку.

Включение ограничения, которое было отключено, требует выполнения другого оператора ALTER TABLE, которое содержит опцию CHECK или CHECK ALL.

ALTER TABLE имятаблицы

{CHECK | NOCHECK} CONSTRAINT

{ALL | ограничение [, …]}

Пример

Следующий пример отключает ограничение FK_Employees. Оно может быть включено с помощью выполнения Другова оператора ALTER TABLE, которое содержит опцию CHECK:

USE Northwind

ALTER TABLE dbo.Employees

NOCHECK

CONSTRAINT FK_Employees

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

Использование значений по умолчанию и ролей

Значения по умолчанию и роли – это объекты, которые могут ограничивать одну или несколько колонок или типы, определённые пользователем, делая возможным создавать их однажды и использовать регулярно.

Если значение не указано, когда вы вставляете данные, для него будет использовано значение по умолчанию. Рассматривайте следующие факты и рекомендации, прежде чем создавать значения по умолчанию:

*  Любые правила связанные с колонкой и типом данных проверяют значения по умолчанию;

*  Любые ограничения CHECK должны проверять и значения по умолчанию.

*  Вы не можете создать ограничение DEFAULT на колонку, которая объявлена с использованием типа, определённого пользователем с уже существующим значением по умолчанию.

CREATE DEFAULT имя

AS выражение константы

После создания значения по умолчанию, вы должны связать его с колонкой или типом данных определённым пользователем с помощью вызова системной процедуры sp_bindefault. Для отключения значения по умолчанию выполните системную процедуру sp_unbindefault.

Пример

Следующий пример помещает шаблон номера телефона, если не указано реальное значение:

USE Northwind

GO

CREATE DEFAULT phone_no_default

AS '(000)00-00-00'

GO

EXEC sp_bindefault phone_no_default, 'Customers.Phone'

Правила указывают доступные значения, которые вы можете вставить в колонку. Они гарантируют, что данные подпадают под определённый ряд значений, соответствуют определённому шаблону, или соответствуют определённому списку. Рассматривайте следующие факты о правилах:

*  Объявление правила может содержать любые выражения, которые действительны для оператора WHERE.

*  Колонка или тип определённый пользователем может содержать только одно правило, связанное с ним.

CREATE RULE имя

AS выражение условия

После создания роли, вы должны связать его с колонкой или типом данных определённым пользователем с помощью вызова системной процедуры sp_bindrule. Для отключения правила выполните системную процедуру sp_unbinrule.

В следующем примере, правило гарантирует, что могут использоваться только определённые штаты:

USE Northwind

GO

CREATE RULE regioncode_rule

AS @regioncode IN ('IA', 'IL', 'KS', 'MO')

GO

EXEC sp_bindrule regioncode_rule, 'Customers.Region'

Для удаления значения по умолчанию из базы данных используйте оператор DROP:

DROP DEFAULT  имя [,…]

DROP RULE имя [,…]

Как определить, какой метод использовать

Вы должны рассматривать функциональность и производительность, когда определяете, какой метод использовать для обеспечения целостности данных:

Компонент

Функциональность

Производительность

До или после изменений

Ограничения

Средняя

Быстрая

До

Значения по умолчанию и правила

Маленькая

Быстрая

До

Триггеры

Высокая

Средняя, медленная

После (исключая INSTEAD OF триггеры)

Типы данных

Маленькая

Высокая

До

5.5 Лабораторные

Объявление значения по умолчанию