Транзакция и атомарность сценария
Транзакция объединяет изменения: либо применяются все, либо ни одно.
$pdo->beginTransaction();Граница
Открывайте транзакцию вокруг предметного сценария, например создания заказа и резервирования остатков, а не вокруг всего HTTP-запроса.
Шаблон
<?php
$pdo->beginTransaction();
try {
// изменения
$pdo->commit();
} catch (Throwable $e) {
$pdo->rollBack();
throw $e;
}Внешние системы
Email или HTTP API не откатываются вместе с SQL. Для надёжной доставки используют outbox или отдельную компенсирующую операцию.
Ошибка
DDL может вести себя по-разному между СУБД. Проверяйте документацию драйвера, а не предполагайте одинаковый rollback миграции.
Задание
Определите транзакционную границу для перевода денег между двумя счетами.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.