К списку
SQL и базы данныхSeniorТехническое

Что происходит с данными при откате транзакции в базе данных

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

Откат транзакции отменяет все изменения, сделанные внутри неё, возвращая базу данных в состояние до начала транзакции. Это обеспечивает целостность данных и предотвращает частичные обновления при ошибках.

Развёрнуто

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

Откат транзакции полностью отменяет все операции, выполненные в её рамках, восстанавливая исходное состояние базы данных. Это гарантирует, что изменения не будут частично применены при возникновении ошибок или исключений.


Как это работает

В SQL и большинстве систем управления базами данных (СУБД) транзакция — это набор операций, которые выполняются как единое целое. При вызове команды ROLLBACK происходит отмена всех изменений, внесённых в рамках текущей транзакции. Это значит, что любые INSERT, UPDATE или DELETE операции не будут сохранены в базе данных.

Операция отката защищает данные от неконсистентного состояния, обеспечивая атомарность (одно из свойств ACID) — либо все изменения применяются, либо ни одного.

Действие Результат после коммита (COMMIT) Результат после отката (ROLLBACK)
Добавление записи Запись сохраняется в базе Запись не сохраняется
Изменение данных Изменения фиксируются Изменения отменяются
Удаление записи Запись удаляется из базы Запись остаётся без изменений

Пример

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
-- Возникла ошибка или отмена операции
ROLLBACK;

В этом примере оба обновления балансов не сохранятся, и база вернётся к состоянию до начала транзакции.

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

  • Откат обеспечивает атомарность транзакции — все изменения либо применяются полностью, либо отменяются.
  • После ROLLBACK база данных возвращается к состоянию до начала транзакции.
  • Откат используется для обработки ошибок и предотвращения неконсистентных данных.
  • Не все операции в СУБД могут быть откатаны (например, DDL-запросы в некоторых СУБД).
  • Знание работы транзакций и отката критично для тестирования устойчивости и корректности приложений.

Тема: SQL и базы данных | Уровень: senior