Работа с триггерами
Обновлен: Ноябрь 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 в представлениях
Практическое руководство. Отображение свойств триггера