Sobes.tech
Назад к вопросам
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();