Является ли UPDATE сам по себе транзакцией? Нужна ли явная транзакция для одного атомарного UPDATE?

Операция UPDATE в большинстве современных СУБД является атомарной и выполняется в рамках внутренней транзакции, даже если явная транзакция не задана.

Короткий ответ

Что ответить на собеседовании

Операция UPDATE в большинстве современных СУБД является атомарной и выполняется в рамках внутренней транзакции, даже если явная транзакция не задана. Это значит, что отдельный UPDATE сам по себе — транзакция с точки зрения атомарности: либо все изменения применятся, либо не применятся.

Подробный разбор

Ответ с пояснениями

Операция UPDATE в большинстве современных СУБД является атомарной и выполняется в рамках внутренней транзакции, даже если явная транзакция не задана. Это значит, что отдельный UPDATE сам по себе — транзакция с точки зрения атомарности: либо все изменения применятся, либо не применятся.

Однако, если нужно выполнить несколько операций (например, несколько UPDATE, INSERT, DELETE) как единое целое, чтобы обеспечить согласованность данных, то требуется явная транзакция (BEGIN TRANSACTION ... COMMIT/ROLLBACK).

Итого:

  • Один атомарный UPDATE обычно не требует явной транзакции.
  • Для группировки нескольких операций нужна явная транзакция.

Пример в SQL:

-- Один UPDATE без явной транзакции
UPDATE users SET status = 'active' WHERE id = 123;

-- Несколько операций в явной транзакции
BEGIN TRANSACTION;
UPDATE users SET status = 'active' WHERE id = 123;
INSERT INTO logs(user_id, action) VALUES (123, 'activated');
COMMIT;

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку