Laravel:如果你不提交或回滚你手动启动的事务怎么办?



我最近开始使用PHP/Laravel(我已经使用Java15+年了)。我在代码库中注意到了这段代码:

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

我已经在文档中发现,正确的方法是将DB::transaction与包含数据库调用的闭包一起使用。

但是我想知道在DB::commit()调用之前调用数据库时会发生什么?我假设由于您不提交,数据库中不会存储任何内容,但它会产生进一步的后果(db 行锁?离开函数时事务是否会中止?

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

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

最新更新