Что такое триггер в контексте баз данных?

«Что такое триггер в контексте баз данных?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Триггер — это специальная хранимая процедура в базе данных, которая автоматически выполняется при наступлении определенного события (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();

Практическое применение:

  1. Аудит — логирование изменений данных
  2. Валидация — проверка сложных бизнес-правил
  3. Денормализация — автоматическое поддержание производных данных
  4. Репликация — синхронизация между таблицами

Важно: чрезмерное использование триггеров может:

  • Скрывать бизнес-логику в БД
  • Усложнять отладку
  • Создавать каскадные выполнения
  • Влиять на производительность