2.2. Программная реализация требований целостности в БД
Существует два способа реализации требований целостности: при помощи ограничений целостности (декларативная реализация; см. описание лабораторной работы №2) и при помощи триггеров (процедурная реализация).
На стадии программной реализации требования целостности в БД неизбежно возникает вопрос, какой механизм использовать: типовое ограничение целостности или триггеры. Если описатель представляет собой конструкцию вида (3) – (7), можно использовать ограничение целостности:
описатель (2) – ограничение целостности primarykey;
описатель (3) – ограничение целостности unique;
описатель (4) – ограничение целостности notnull;
описатель (5) – ограничение целостности check;
описатель (6) – ограничение целостности foreignkey.
Триггеры целесообразно использовать в тех случаях, когда реализуемое требование целостности не является типовым, охватывает несколько таблиц и (или) предусматривает автокоррекцию вносимой информации. Прежде чем давать рекомендации по реализации требований целостности с помощью триггеров, рассмотрим более подробно свойства и структуру триггеров Microsoft SQL Server 2005 и средства работы с ними.
2.3. Понятие триггера. Классификация триггеров
Триггер в БД – это создаваемая для некоторой пользовательской таблицы хранимая процедура специального типа, которая запускается автоматически при осуществлении тех или иных модификаций в таблице. Пользовательская таблица, для которой создается триггер, называется связанной таблицей. А операция, которая инициирует выполнение триггера, называется активизирующей операцией. Так как операции над таблицами всегда (явно или неявно) ассоциированы с выполнением SQL-оператора или транзакции, в литературе чаще применяется другой термин – активизирующий оператор.
Какие именно действия приводят к запуску триггера? Полный их набор определяется версией СУБД, но чаще всего такими действиями являются вставка, удаление и обновление строк в связанной таблице. Что касается СУБД Microsoft SQL Server 2005, то здесь имеются две группы триггеров: DML (Data Manipulation Language – язык манипулирования данными) и DDL (Data Definition Language - язык определения данных). Они реагируют на выполнение операторов DML и DDL, соответственно. DML-триггеры в Microsoft SQL Server бывают трех типов:
· inserttrigger – запускается при выполнении вставки строк в таблицу;
· updatetrigger – запускается при обновлении значений в таблице;
· deletetrigger – запускается при удалении строк из таблицы.
Необходимо еще раз подчеркнуть, что DML-триггеры всегда связаны с одной определенной таблицей и хранятся вместе с нею, в одной БД. Классификация DML-триггеров не является строгой, поскольку триггер может быть одновременно insert и update, update и delete и т. д. Не исключены случаи, когда для одного триггера все три оператора могут быть активизирующими.
Что касается DDL-триггеров, они охватывают всю группу операторов create/alter/drop, т. е. реагируют на создание, модификацию структуры и уничтожение различных объектов баз данных. Впрочем, и для операторов create/alter/drop database в СУБД SQL Server 2005 создать триггер.
Активизирующий оператор и триггер образуют единую транзакцию. Работа триггера, в конечном итоге, сводится либо к фиксации, либо к откату транзакции. Если выполняется откат, то отменяются и все действия, выполненные активизирующим оператором. При фиксации транзакции производится фиксирование изменений, выполненных как триггером, так и активизирующим оператором.
Второй тип классификации триггеров – по относительному моменту запуска:
· триггер типа after – триггер, который запускается после активизирующего оператора (этот тип устанавливается при создании триггера по умолчанию);
· триггер типа insteadof – триггер, выполняемый взамен активизирующего оператора.
Заметим, что DDL-триггер может относиться только к типу after.
В SQL Server 2005 разрешается создавать множество триггеров каждого типа для одной и той же таблицы. Кроме того, имеется возможность создавать триггеры для представлений.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.