Поделиться через


Работа с триггерами

Обновлен: Ноябрь 2007

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

Триггеры могут обращаться к другим таблицам и содержать сложные инструкции SQL. Они в первую очередь полезны для принудительного применения сложных бизнес-правил или требований. Например, можно управлять разрешением вставки нового порядка с учетом текущего состояния счета клиента.

Триггеры также полезны для принудительного обеспечения целостности ссылок, что позволяет сохранить определенные связи между таблицами при добавлении, обновлении или удалении строк в этих таблицах. Тем не менее, лучшим способом обеспечить целостность ссылок является определение в связанных таблицах ограничений первичного и внешнего ключей. При использовании конструктора таблиц можно создать связь между таблицами, что позволит автоматически создать ограничение внешнего ключа. Дополнительные сведения см. в разделе Связи между таблицами (визуальные инструменты для баз данных).

Триггеры удобно использовать в следующих случаях:

  • Триггеры действуют автоматически. Они активируются непосредственно после внесения изменений в данные таблицы, например при вводе новых данных вручную или их автоматической подстановки приложением.

  • Триггеры позволяют каскадно изменять данные в связанных таблицах базы данных. Например, можно создать триггер удаления в столбце title_id таблицы titles, который будет удалять совпадающие строки в других таблицах. Этот триггер использует столбец title_id как уникальный ключ для обнаружения соответствующих строк в таблицах titleauthor, sales и roysched.

  • Триггеры могут принудительно применять ограничения, которые являются более сложными, чем определенные при помощи Проверочные ограничения (визуальные инструменты для баз данных). В отличие от проверочных ограничений триггеры могут ссылаться на столбцы других таблиц. Например, триггер позволяет откатить обновления, которые предпринимают попытку применить скидку (данные хранятся в таблице discounts) для книг (данные хранятся в таблице titles) с ценой менее 10 долларов США.

Дополнительные сведения о триггерах и примеры см. в документации по соответствующему серверу баз данных. Если используется Microsoft SQL Server, см. раздел "Создание триггеров" в SQL Server Books Online.

В этом подразделе

Практическое руководство. Создание триггера

Практическое руководство. Сохранение триггера

Практическое руководство. Открытие триггера

Практическое руководство. Удаление триггера

Практическое руководство. Изменение триггеров

Использование триггеров INSTEAD OF в представлениях

Практическое руководство. Отображение свойств триггера

Ссылка

Ссылка (визуальные инструменты работы с базами данных)