Laravel:如果你没有提交或回滚手动启动的交易怎么办?

时间:2016-06-10 08:06:54

标签: php laravel transactions

我最近开始使用PHP / Laravel(我已经使用Java工作了15年以上)。我在代码库中注意到了这段代码:

public function doSomeStuffInDb() {
  DB::beginTransaction();
  // Some db calls here
  DB::commit();
}

我在文档中已经发现,正确的方法是使用DB::transaction和一个包含db调用的闭包。

但是我想知道在DB::commit()调用之前调用数据库时发生异常会发生什么?我假设没有任何东西将存储在数据库中,因为你没有提交,但它是否会产生进一步的后果(db row locks?)?离开函数时交易是否会中止?

1 个答案:

答案 0 :(得分:1)

任何尚未提交或回滚的事务都可能具有脏读,不可重复读,幻读以及您在java中实现的所有其他注意事项的相同危险。

含义 - 即使锁定在行级别完成,查询作为非锁定一致性读取运行,最终会产生许多进一步的后果。锁定的处理取决于您的数据库设置,有些时候它们会被删除,有些则会留下它们。

相关问题