Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 41

ОЦ являются объектами БД. Они создаются разработчиками БД и связываются с определенными столбцами таблиц, после чего СУБД автоматически контролирует правильность значений, попадающих в указанные столбцы при выполнении операций записи (в основном вставки и обновления строк). Типичными для реляционных СУБД являются ОЦ, описанные ниже, в табл. 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]) триггеров, привязанных к данной таблице. Сами триггеры из БД не удаляются, но перестают реагировать на действия пользователя до тех пор, пока снова не будут разрешены.