Назад к вопросам
Middle
7
Работал ли с триггерами? Для чего использовал? Какие типы триггеров знаешь (ROW vs STATEMENT)?
Компании, где спрашивали
AltDev
Ответ от нейросети
sobes.tech AI
Триггеры в базах данных используются для автоматического выполнения определённых действий при наступлении событий (INSERT, UPDATE, DELETE) в таблицах. Я применял триггеры для аудита изменений данных, автоматического обновления связанных таблиц и контроля целостности.
Существует два основных типа триггеров по уровню срабатывания:
- ROW-level (по строке) — триггер срабатывает для каждой изменяемой строки. Например, при обновлении 10 строк триггер выполнится 10 раз.
- STATEMENT-level (по оператору) — триггер срабатывает один раз на весь SQL-запрос, независимо от количества затронутых строк.
Пример создания триггера на уровне строки в PostgreSQL:
CREATE FUNCTION audit_changes() RETURNS trigger AS $$
BEGIN
INSERT INTO audit_log(table_name, operation, changed_at)
VALUES (TG_TABLE_NAME, TG_OP, now());
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER audit_trigger
AFTER INSERT OR UPDATE OR DELETE ON my_table
FOR EACH ROW EXECUTE FUNCTION audit_changes();