Для чего можно использовать Триггер в базах данных

«Для чего можно использовать Триггер в базах данных» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Триггеры в базах данных автоматически выполняют заданные действия при наступлении определенных событий (INSERT, UPDATE, DELETE).

Основные сценарии использования:

  • Аудит изменений — логирование изменений данных (кто, когда, что изменил).
  • Валидация данных — проверка и коррекция перед сохранением.
  • Каскадные операции — автоматическое обновление связанных таблиц.
  • Поддержка целостности — сложные ограничения, которые нельзя выразить через FOREIGN KEY или CHECK.

Пример (логирование изменений в PostgreSQL):

CREATE OR REPLACE FUNCTION log_user_changes() 
RETURNS TRIGGER AS $$
BEGIN
    INSERT INTO user_audit (user_id, action, timestamp)
    VALUES (NEW.id, 'UPDATE', NOW());
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER user_update_trigger
AFTER UPDATE ON users
FOR EACH ROW EXECUTE FUNCTION log_user_changes();

⚠️ Осторожно! Чрезмерное использование триггеров усложняет отладку и может привести к неочевидным побочным эффектам.