Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00
Лекция 16:

Создание и использование умолчаний, ограничений и правил

Объекты типа Rule

Альтернативой использованию ограничения CHECK является создание объекта типа Rule (Rule-объекта) для ограничения значений, которые можно поместить или изменить в колонке. Rule-объект аналогичен Default-объекту в том, что он создается отдельно от таблицы и не удаляется при удалении таблицы. Вы должны также выполнить привязку Rule-объекта к колонке или к определенному пользователем типу – в данном случае – с помощью системной хранимой процедуры sp_bindrule. И, подобно Default-объекту, Rule-объекты включены в SQL Server 2000 для обратной совместимости с предыдущими версиями. Использование ограничения CHECK является предпочтительным методом ограничения значений колонок, но Rule-объекты полезно использовать, когда одно правило нужно использовать для нескольких колонок или определенных пользователем типов.

Создание Rule-объекта с помощью T-SQL

В качестве примера мы создадим Rule-объект, который выполняет ту же функцию, что и ограничение CHECK, которое мы создали выше. Наше правило использует имя переменной @price для ссылки на колонку price таблицы items. Имя переменной должно начинаться с символа "@", а имя можете выбрать произвольно. Сначала мы создадим данное правило и затем выполним его привязку к колонке, как это показано ниже:

USE MyDB
GO 
CREATE RULE price_rule AS 
(@price >= .01 AND @price <= 500.00) 
GO 
sp_bindrule 'price_rule', 'items.price', 'futureonly' 
GO

Для отмены привязки правила и его удаления используйте следующий оператор:

sp_unbindrule 'items.price'
GO 
DROP RULE price_rule 
GO

Для процедур sp_bindrule и sp_unbindrule указываются те же параметры, что и для процедур sp_bindefault и sp_unbindefault (см. раздел "Оператор CREATE DEFAULT и процедура sp_bindefault" выше в этой лекции). Каждая колонка или определенный пользователем тип может иметь только одно правило, хотя вы можете одновременно присвоить одной колонке или определенному пользователем типу правило и одно или несколько ограничений CHECK. Если вы сделаете это, SQL Server будет применять правило и все ограничения к данным таблицы при их вставке или обновлении.

Создание Rule-объекта с помощью Enterprise Manager

Чтобы использовать Enterprise Manager для создания и привязки Rule-объекта, выполните следующие шаги.

  1. Раскройте имя сервера и имя базы данных в Enterprise Manager. Щелкните правой кнопкой мыши на Rules (Правила) и затем выберите из контекстного меню пункт New Rule (Создать правило), чтобы появилось окно Rule Properties (Свойства правила). В данном примере мы зададим имя правила price_rule и добавим текст (рис. 16.24). Щелкните на кнопке OK, чтобы создать данный Rule-объект.
      Окно Rule Properties (Свойства правила) для создания правила

    Рис. 16.24. Окно Rule Properties (Свойства правила) для создания правила
  2. Для привязки правила щелкните на Rules в левой панели Enterprise Manager, щелкните правой кнопкой мыши на новом правиле и затем выберите из контекстного меню пункт Properties, чтобы появилось окно Rule Properties. Как и в случае привязки Default-объектов, щелкните на кнопке Bind UDTs для привязки данного правила к определенному пользователем типу или щелкните на Bind Columns для привязки данного правила к колонке или к колонкам. В данном примере мы щелкнем на кнопке Bind Columns и выберем колонку price таблицы items для привязки к ней правила (рис. 16.25).
      Привязка правила к колонке

    Рис. 16.25. Привязка правила к колонке
  3. Щелкните на кнопке OK, чтобы применить ваше правило, и затем снова щелкните на кнопке OK, чтобы закрыть окно Rule Properties

Чтобы удалить правило, вы должны сначала отменить привязку правила ко всем колонкам или определенным пользователем типам. После отмены привязки правила щелкните правой кнопкой мыши на имени этого правила, выберите из контекстного меню пункт Delete и затем щелкните на кнопке Drop All в диалоговом окне Drop Objects. Если имеется привязка правила к какой-либо колонке, когда вы пытаетесь удалить его, то SQL Server выведет сообщение об ошибке и не удалит данное правило.

Заключение

В этой лекции вы узнали об умолчаниях и пяти типах ограничений, которые можно задать по колонке или таблице; вы также узнали, как создавать и модифицировать умолчания и ограничения с помощью T-SQL и Enterprise Manager. Кроме того, узнали, как создавать и модифицировать умолчания и правила с помощью Default-объектов и Rule-объектов. Умолчания позволяют задавать для колонки значение по умолчанию, когда не задано конкретное значение. Ограничения можно использовать различными способами для обеспечения целостности данных в вашей базе данных. Умолчания и ограничения является полезными средствами, если они продуманно применяются к вашим таблицам базы данных. В "Создание и использование индексов" мы рассмотрим использование индексов в SQL Server, включая кластеризованные и некластеризованные индексы. Использование индексов может в огромной степени увеличить эффективность доступа к данным.