Ответ
Триггеры в базах данных автоматически выполняют заданные действия при наступлении определенных событий (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();
⚠️ Осторожно! Чрезмерное использование триггеров усложняет отладку и может привести к неочевидным побочным эффектам.