Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Янин В.Л. "Новгородские акты XII-XV Хронологический комментарий" (История)

Майринк Г. "Белый доминиканец " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 2" (Художественная литература)

Петров Г.И. "Отлучение Льва Толстого " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 1 " (Художественная литература)
Реклама

Microsoft SQL server. Реализация и обслуживание Учебный курс - Microsoft press

Microsoft press Microsoft SQL server. Реализация и обслуживание Учебный курс — Microsoft Press, 2007. — 766 c.
Предыдущая << 1 .. 135 136 137 138 139 140 < 141 > 142 143 144 145 146 147 .. 343 >> Следующая

Занятие 3
Реализация триггеров 297
ются при возникновении событий языка обработки данных (DML), и DLL-триггеры, срабатывающие при выполнении инструкций языка определения данных (DDL). DML-триггеры выполняются при изменении данных в указанной таблице или представлении посредством инструкций INSERT, UPDATE или DELETE. DDL-триггеры, которые выполняются при возникновении на сервере таких DDL-событий, как создание, изменение или удаление объекта, используются для администрирования базы данных, например для аудита и управления доступом к объектам. В этом занятии вы научитесь создавать DML-триггеры AFTER и INSTEAD OF, определять рекурсивные и вложенные три-геры, управлять ими и создавать DDL-триггеры для выполнения задач администрирования.
Изучив материал этого занятия, вы сможете:
/ создавать DML-тpиггepы;
/ создавать DDL-тpиггepы;
/ определять рекурсивные и вложенные триггеры. Продолжительность занятия — около 20 минут.
DML-триггеры
В отличие от хранимых процедур и функций DML-триггеры не являются отдельными объектами, и их нельзя исполнить напрямую. DML-триггер привязан к конкретной таблице или представлению и определяется для конкретного события. При возникновении этого события SQL Server автоматически исполняет код триггера, то есть запускает триггер. Событиями, вызывающими запуск триггера, являются операции INSERT, UPDATE и DELETE.
Триггеры можно запускать в двух режимах: AFTER и INSTEAD OF.
Триггер AFTER запускается после успешного завершения SQL-сервером всех операций. Например, при вставке строки в таблицу триггер, определенный для операции INSERT, запускается только после того, как строка пройдет все ограничения, заданные первичными ключами, уникальные индексы, ограничения, правила и внешние ключи. Если любое из этих условий не проходит проверку, SQL Server не исполнит триггер. Триггеры AFTER могут быть определены только для таблиц. Для представления или таблицы можно создать любое количество триггеров AFTER.
Триггер INSTEAD OF выполняется вместо операции, вызвавшей запуск триггера. Если бы для таблицы из предыдущего примера был определен триггер INSTEAD OF, вставка не выполнилась бы, таким образом не выполнилась бы и проверка. Вместо этого SQL Server выполнил бы код триггера. Триггеры INSTEAD OF могут создаваться для представлений и таблиц. Чаще всего триггеры INSTEAD OF применяются к представлениям с целью обновления нескольких базовых таблиц через представление. Для каждого события INSERT, UPDATE или DELETE для представления или таблицы можно создать только один триггер INSTEAD OF. Код триггера может состоять из любых допустимых инструкций и конструкций, но есть и исключения. Далее приведен краткий список наиболее важных команд и конструкций, которые нельзя использовать в триггере:
? Нельзя создавать, изменять, удалять резервные копии или восстанавливать базы данных.
? В таблице, которая привела к запуску триггера, не допускаются такие структурные изменения, как CREATE/ALTER/DROP INDEX, ALTER/DROP TABLE и так далее.
298
Создание функций, хранимых процедур и триггеров
Глава 9
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Исключения для триггеров
Полный список команд и конструкций, недопустимых к использованию в триггерах, вы найдете в статье «CREATE TRIGGER (Transact-SQL)» в Электронной документации по SQL Server 2005.
SQL Server не поддерживает создание триггеров для системных объектов, например системных таблиц и представлений динамического управления. Триггеры также выполняются только в ответ на протоколируемые операции. Операции с минимальным протоколированием, такие как TRUNCATE и WRITETEXT, не приводят к запуску триггера.
ПРАКТИЧЕСКИЙ ОПЫТ Ссылочная целостность
Триггеры могут использоваться для обеспечения ссылочной целостности. Однако их не следует применять вместо декларативной ссылочной целостности (DRI) посредством ограничения FOREIGN KEY. DRI реализуется при внесении модификции до того, как изменение станет частью таблицы, и это гораздо эффективнее, чем исполнение кода триггера. Но ограничения FOREING KEY нельзя определять применительно к базам данных. Поэтому для обеспечения ссылочной целостности баз данных следует использовать триггеры.
Триггеры имеют доступ к двум специальным динамически создаваемым таблицам INSERTED и DELETED. Эти таблицы видны только внутри триггера и недоступны другим конструкциям, таким как хранимые процедуры и функции. Структура таблиц INSERTED и DELETED полностью соответствует определению столбца таблицы, для которой был создан триггер. Поэтому на столбцы можно ссылаться по тому же имени, что и таблица, для которой был определен триггер.
При исполнении инструкции INSERT таблица INSERTED содержит все добавленные в таблицу строки, тогда как в таблице DELETED нет ни одной строки. При исполнении инструкции DELETE таблица DELETED содержит все удаленные из таблицы строки, тогда как в таблице INSERTED нет ни одной строки. При исполнении инструкции UPDATE таблица INSERTED содержит образы строк после обновления, а таблица DELETED — образы строк до обновления. Образ строки до обновления — это просто копия строки до исполнения инструкции UPDATE. Образ строки после обновления отображает данные в строке после изменения соответствующих значений посредством инструкции UPDATE.
Предыдущая << 1 .. 135 136 137 138 139 140 < 141 > 142 143 144 145 146 147 .. 343 >> Следующая