Что произошло при откате таблицы при отсутствии транзакции? - PullRequest
1 голос
/ 15 января 2020

Это редкий случай, но по какой-то причине мне нужна внешняя попытка улова. Поэтому я не могу контролировать отдельные транзакции.

, поэтому у меня есть только один внешний оператор catch.

catch(Exception $e) {
   DB::rollback();
   Log:error($e->getMessage());
}

Но что произошло, если произошла ошибка до того, как ни одна транзакция не была инициирована. Причиняет ли откат неожиданный ущерб?

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Вы можете позвонить DB::transactionLevel(), чтобы получить счет:

catch(Exception $e) {
   if (0 < DB::transactionLevel()) {
       DB::rollback();
   }
   Log:error($e->getMessage());
}

Ссылка: Подсветка \ База данных \ ConnectionInterface | Laravel API

1 голос
/ 19 января 2020

ROLLBACK относится к «транзакции», а не к «таблице». Может быть несколько таблиц, участвующих в транзакции, или даже не может быть таблиц , но вовлеченных.

ROLLBACK готов сделать все, что нужно, даже включая «ничего». Не волнуйся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...