ОЦ являются объектами БД. Они создаются разработчиками БД и связываются с определенными столбцами таблиц, после чего СУБД автоматически контролирует правильность значений, попадающих в указанные столбцы при выполнении операций записи (в основном вставки и обновления строк). Типичными для реляционных СУБД являются ОЦ, описанные ниже, в табл. 5.6.
Таблица 5.6 – Ограничения целостности, используемые в реляционных СУБД
Описатель требования целостности |
Вид ОЦ |
Описание |
PRIMARY KEY |
Определяет первичный ключ |
|
UNIQUE |
Гарантирует уникальность значений в таблице |
|
NOT NULL |
Запрещает хранение неопределенных значений |
|
CHECK |
Задает область допустимых значений для простого или составного атрибута с помощью логических условий |
|
FOREIGN KEY |
Определяет внешний ключ |
Все ОЦ, кроме последнего, можно отнести к запрещающим ОЦ. СУБД запрещает выполнение любого запроса и транзакции, если их выполнение приводит к появлению некорректных значений в контролируемых столбцах и таблицах. СУБД не даст добавить NULL-значение в столбец с установленным ОЦ PRIMARY KEY или NOT NULL; не позволит она поместить значение в столбец, если оно не согласуется с условием ограничения CHECK и т. п.
Что касается ОЦ FOREIGN KEY, оно стоит несколько особняком среди других типовых ОЦ. Создавая его, разработчик может настроить каскадное обновление и каскадное удаление ссылок. А значит, с данным ОЦ связано два варианта поведения системы: запрет появления неправильных ссылок и автокоррекция ссылок.
ОЦ создаются вместе с таблицами. Операторы CREATE TABLE и ALTER TABLE позволяют описывать не только имена и типы столбцов, но и ОЦ, накладываемые на них. Причем имеется два варианта задания ОЦ: на уровне столбца или таблицы. Синтаксис описания ОЦ обоих уровней рассматривается в описании лабораторной работы №2 настоящего курса.
5.3.3.2. Триггеры
Если требование целостности не относится к типовым и не является совокупностью типовых требований, накладываемых одновременно на один и тот же набор столбцов, имеет смысл реализовать его с помощью одного и более триггеров. Триггер – это создаваемая для некоторой пользовательской таблицы хранимая процедура специального типа, которая запускается автоматически при осуществлении тех или иных модификаций в таблице. Пользовательская таблица, для которой создается триггер, называется связанной таблицей. А операция, которая инициирует выполнение триггера, называется активизирующей операцией. Так как операции над таблицами всегда (явно или неявно) ассоциированы с выполнением SQL-оператора или транзакции, в литературе чаще применяется другой термин – активизирующий оператор.
Действия, выполняемые триггером, направлены на достижение следующих основных целей:
· контроль правильности вносимых изменений;
· выполнение сопутствующих модификаций в БД.
Создание триггера в целом напоминает создание хранимой процедуры.Упрощенный синтаксис операторов создания и модификации триггеров в Transact-SQL следующий:
CREATE | ALTER TRIGGER имя_триггера
ON таблица | представление
FOR [{AFTER | INSTEAD OF}]
[DELETE] [,] [INSERT] [,] [UPDATE]
AS
тело_триггера
После ключевого слова FOR указывается тип триггера, по умолчанию принимается AFTER. Что касается ключевых слов INSERT, DELETE и UPDATE, то одно из них должно стоять обязательно – иначе неясно, на какое действие будет следовать реакция.
Для удаления триггера используется команда DROP TRIGGER, с единственным параметром – именем триггера. Одним вызовом можно удалить и сразу несколько триггеров, перечислив их через запятую.
Можно активизировать и деактивизировать триггер, не удаляя его из БД. В команде ALTER TABLE имеется секция {ENABLE | DISABLE} TRIGGER, которая разрешает (ENABLE) или запрещает (DISABLE) действие всех (ALL) или перечисленных (имя_триггера [,…n]) триггеров, привязанных к данной таблице. Сами триггеры из БД не удаляются, но перестают реагировать на действия пользователя до тех пор, пока снова не будут разрешены.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.