Профтемы студенту и преподавателю
Taketop.ru
СТУДЕНТУ И ПРЕПОДАВАТЕЛЮ
лекции по дисциплинам
Информатика и вычислительная техника :: Разработка и эксплуатация удаленных баз данных
Триггеры
Триггер (trigger) - это специальный тип хранимых процедур, запускаемых сервером автоматически при выполнении тех или иных действий с данными таблицы.
Каждый триггер привязывается к конкретной таблице. Когда пользователь пытается, например, изменить данные в таблице, сервер автоматически запускает триггер и, только если он завершается успешно, разрешается выполнение изменений. Все производимые триггером модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушении целостности данных происходит откат этой транзакции. Тем самым внесение изменений будет запрещено. Будут также отменены все изменения, уже сделанные триггером.
C помощью ограничений целостности, правил и значений по умолчанию не всегда можно добиться нужного уровня функциональности. Часто требуется реализовать сложные алгоритмы проверки данных, чтобы гарантировать их достоверность и реальность. Кроме того, бывает необходимо отслеживать изменения значений таблицы, чтобы нужным образом изменить связанные данные. Для решения этих и многих других проблем используются триггеры. Область применения триггеров не ограничивается какими-то строго очерченными рамками. Вы можете свободно применять триггеры по своему усмотрению, исходя из требований к удобству и производительности выполняемых действий.
Достоинства триггеров:

- автоматическое обеспечение каскадных воздействий в дочерней таблице при выполнении операций над родительскими таблицами, при этом эти каскадные воздействия выполняются на сервере, и пользователю нет нужды заботиться об этом на клиентских программах. (Не все СУБД поддерживают при определении таблиц каскадные воздействия в дочерних таблицах)
- изменения в триггерах не ведут к переписыванию клиентских программ и не требуют распространения новых версий клиентских программ между пользователями.
- при отказе (отмене) транзакций отменяются также все изменения, внесенные в БД с помощью триггеров.
Для эффективного применения триггеров необходимо четкое понимание принципов их действия. Не следует применять триггеры для выполнения простых проверок, которые могут быть произведены с помощью правил или ограничений целостности. Кроме того, следует избегать использования триггеров, если те же действия могут быть реализованы с помощью хранимой процедуры или обычного пакета команд Transact-SQL. Использование триггеров нежелательно еще и по той причине, что они удерживают блокировку до завершения триггера, запрещая обращение к ресурсу других пользователей.
Триггеры различаются по типу команд, на которые они реагируют. Существуют три типа триггеров.
1. INSERT TRIGGER. Триггеры этого типа запускаются при попытке вставки данных с помощью команды INSERT;
2. UPDATE TRIGGER. Триггеры этого типа запускаются при попытке изменения данных с помощью команды UPDATE;
3. DELETE TRIGGER. Триггеры этого типа запускаются при попытке удаления данных с помощью команды DELETE.
Создание триггеров.

Для создания триггера используется команда CREATE TRIGGER.
CREATE TRIGGER <Имя_триггера> FOR <Имя_таблицы>
[ACTIVE| INACTIVE]
{BEFORE | AFTER }
{DELETE | INSERT | UPDATE }
[POSITION <номер> ]
AS
[<объявление локальных переменных>]
BEGIN
<операторы>
END

Изменение и удаление процедур и триггеров

Изменение процедур (триггеров) возможно с помощью операторов ALTER PROCEDURE (ALTER TRIGGER), формат которых ничем не отличается от формата создания процедуры (триггера), за исключением того, что при изменении триггера нельзя указывать часть FOR <имя таблицы>
Удалить процедуру (триггер) можно с помощью операторов DROP PROCEDURE (DROP TRIGGER), <имя процедуры> (<имя триггера>)


Работы, представленные на сайте http://taketop.ru, предназначено исключительно для ознакомления. Все права в отношении работ и/или содержимого работ, представленных на сайте http://taketop.ru, принадлежат их законным правообладателям. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие или полученные в связи с использованием работ и/или содержимого работ, представленных на сайте http://taketop.ru
Рейтинг@Mail.ru
Сайт управляется SiNG cms © 2010-2015