Ответ
Атомарность — это одно из свойств ACID, гарантирующее, что транзакция выполняется как единое целое: либо все её операции завершаются успешно, либо не выполняется ни одна. Невозможно частичное выполнение транзакции.
Практический пример на SQL (MySQL/PostgreSQL):
START TRANSACTION;
-- 1. Списать сумму со счета отправителя
UPDATE accounts SET balance = balance - 100.00 WHERE user_id = 1;
-- 2. Зачислить сумму на счет получателя
UPDATE accounts SET balance = balance + 100.00 WHERE user_id = 2;
-- Обе операции должны быть выполнены вместе
COMMIT;
-- Если между UPDATE произойдет ошибка, ROLLBACK отменит первую операцию
Пример реализации в PHP с PDO:
$pdo->beginTransaction();
try {
$stmt1 = $pdo->prepare("UPDATE accounts SET balance = balance - ? WHERE user_id = ?");
$stmt1->execute([100.00, 1]);
$stmt2 = $pdo->prepare("UPDATE accounts SET balance = balance + ? WHERE user_id = ?");
$stmt2->execute([100.00, 2]);
$pdo->commit(); // Фиксация обеих операций
echo "Перевод выполнен атомарно.";
} catch (Exception $e) {
$pdo->rollBack(); // Полный откат при любой ошибке
echo "Ошибка перевода. Изменения отменены.";
}
Ключевой вывод: Атомарность защищает от состояний, когда деньги списались, но не зачислились, обеспечивая целостность данных.