Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по серверам.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
749 Кб
Скачать
☆
    1. Принцип работы триггеров

Принцип работы триггера INSERT

  1. Оператор INSERT выполняется в таблице, где определен триггер.

  2. Оператор INSERT регистрируется в журнале.

  3. Срабатывет триггер и выполняются его операторы.

После срабатывания триггера новые записи добавляются как в таблицу триггера так и в таблицу вставок. Таблица вставок хранит все зарегистрированные изменения, выполненные оператором INSERT, и позволяет ссылаться на вставленные данные в вызвавшем триггер операторе INSERT.

Принцип работы триггера DELETE

  1. Оператор DELETE выполняется в таблице, где определен триггер.

  2. Оператор DELETE регистрируется в журнале.

  3. Срабатывет триггер и выполняются его операторы.

После срабатывания триггера DELETE удаляемые записи помещаются в специальную таблицу удалений, в которой хранятся копии удаляемых записей.

Принцип работы триггера UPDATE

  1. Оператор UPDATE выполняется в таблице, где определен триггер.

  2. Оператор UPDATE регистрируется в журнале.

  3. Срабатывет триггер и выполняются его операторы.

Выполнение оператора UPDATE условно разделяют на два этапа: выполнение опертора DELETE, когда регистрируется предыдущее состояние данных и выполнение операторта INSERT, когда регистрируется будущее срстояние данных. При выполнении оператора UPDATE в таблице с определенным триггером исходные записи перемещаются в таблицу удалений, а обновленные записи перемещаются в таблицу вставок.

    1. Включение и отключение триггера. Удаление триггера, Просмотр информации о триггерах

В таблице можно включить или отключить один или несколько триггеров. После отключения триггера его определение не удаляется из таблицы, но при выполнении операторов INSERT, UPDATE и DELETE триггер не срабатывает. Для включения или отключения триггеров служит оператор

ALTER TABLE таблица {ENABLE|Disable}TRIGGER имя триггера

После того как триггер стал ненужным или даже мешает работе, его следует удалить. Выполнение этой операции осуществляется с помощью команды DROP TRIGGER, имеющей следующий синтаксис: DROP TRIGGER {имя триггера} [,...n] Так как имя триггера уникально в пределах базы данных, то указание имени таблицы не требуется. С помощью одной команды DROP TRIGGER можно удалить несколько триггеров, перечислив их имена через запятую.

Просмотреть информацию о триггерах можно с помощью системных хранимых процедур или из SQL Server Enterprise Manager. Процедура sp_helptext имя триггера выводит код триггера. Процедура sp_helptrigger имя таблицы выводит список триггеров, определенных на указанной таблице.

    1. Контрольные вопросы

    1. С какой целью создаются триггеры?

    2. Как осуществляется запуск триггеров?

    3. Могут ли триггеры возвращать наборы результатов?

    4. Какие категории триггеров существуют?

    5. Для чего служат таблицы INSERTED и DELETED? Как эти таблицы используются при выполнении операции обновления?

    6. Какой оператор служит для создания триггеров?

    7. Объясните работу триггеров, приведенных в примерах.

    8. Следует ли создавать триггеры в тех случаях, когда проверка может быть выполнена с помощью ограничений или правил?

    9. Какие операторы служат для удаления триггера, отключения триггера?

    10. Можно ли удалить одновременно несколько триггеров?