Ответ
ROLLBACK — это команда управления транзакциями (TCL) в SQL, которая отменяет все изменения, сделанные в текущей транзакции, возвращая базу данных в состояние, которое было на момент начала транзакции (или до последнего COMMIT).
Как это работает:
- Транзакция начинается неявно или командой
BEGIN/START TRANSACTION. - Выполняются операции
INSERT,UPDATE,DELETE. - Если что-то пошло не так (ошибка, логическое условие), выполняется
ROLLBACK. - Все изменения в рамках этой транзакции аннулируются.
Пример сценария перевода денег:
START TRANSACTION;
-- Списать 100 у.е. со счета 1
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Зачислить 100 у.е. на счет 2
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
-- Проверяем условие: если баланс стал отрицательным, откатываем
IF (SELECT balance FROM accounts WHERE id = 1) < 0 THEN
ROLLBACK; -- ОБА UPDATE отменяются!
SELECT 'Transaction failed: insufficient funds';
ELSE
COMMIT; -- Фиксируем изменения
SELECT 'Transaction successful';
END IF;
Ключевые особенности:
- Атомарность:
ROLLBACKобеспечивает принцип "все или ничего". - Границы: Действует только в пределах текущей транзакции.
- Необратимость: После
COMMITоткатить изменения черезROLLBACKнельзя. - Автоматический откат: При обрыве соединения СУБД обычно выполняет
ROLLBACKавтоматически.
Почему это важно: ROLLBACK — основа для поддержания целостности данных в сложных операциях, где промежуточный сбой не должен оставлять базу в противоречивом состоянии.