Hardprocedurestriggers

Что такое stored procedures и triggers?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Stored procedure — сохранённый в БД код, вызываемый по имени. Trigger — процедура, автоматически выполняемая при DML-событии (INSERT/UPDATE/DELETE) на таблице.

-- Процедура (MySQL-синтаксис)
CREATE PROCEDURE get_user(IN uid INT)
BEGIN
  SELECT * FROM users WHERE id = uid;
END;
CALL get_user(1);

-- Триггер: автообновление updated_at при UPDATE
CREATE TRIGGER users_set_updated_at
BEFORE UPDATE ON users
FOR EACH ROW
SET NEW.updated_at = NOW();

Плюсы процедур: precompiled план, инкапсуляция логики, меньше трафика. Минусы: vendor-specific (PL/pgSQL vs T-SQL vs PL/SQL), сложнее versioning/debug, плохо масштабируется. Триггеры удобны для аудита и денормализации, но создают скрытое поведение и нагрузку.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.