Ответ
Триггер — это специальная хранимая процедура в базе данных, которая автоматически выполняется при наступлении определенного события (INSERT, UPDATE, DELETE) с таблицей.
Основные характеристики:
- Срабатывает до (BEFORE) или после (AFTER) события
- Выполняется для каждой затронутой строки (FOR EACH ROW) или один раз для оператора
- Имеет доступ к старым (OLD) и новым (NEW) значениям данных
Пример триггера в PostgreSQL:
CREATE TRIGGER log_salary_changes
AFTER UPDATE ON employees
FOR EACH ROW
WHEN (OLD.salary <> NEW.salary)
EXECUTE FUNCTION log_salary_change();
Практическое применение:
- Аудит — логирование изменений данных
- Валидация — проверка сложных бизнес-правил
- Денормализация — автоматическое поддержание производных данных
- Репликация — синхронизация между таблицами
Важно: чрезмерное использование триггеров может:
- Скрывать бизнес-логику в БД
- Усложнять отладку
- Создавать каскадные выполнения
- Влиять на производительность