Laravel:如果你手动启动的事务没有提交或回滚,会发生什么?

3

最近我开始接触PHP/Laravel(之前有15年以上的Java开发经验)。我在代码库中注意到了以下代码:

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

我已经找到文档,正确的方法是使用包含db调用的闭包来使用DB::transaction

但是,如果在 DB::commit() 调用之前调用数据库时发生异常会发生什么呢?因为您没有提交,所以我认为不会存储任何内容,但它是否会产生进一步的后果(例如db行锁)?当离开函数时,事务是否会被中止?


你找到任何答案了吗? - Mojtaba Hn
1个回答

2
任何未提交或回滚的事务都可能存在脏读、不可重复读、幻读等问题,这些问题在实现Java时也需要考虑。意思是,即使锁定是在行级别完成的,使用非锁定一致性读取运行查询时,仍会产生许多进一步的后果。锁定的处理取决于您的数据库设置,有些会超时,有些则保持不变。

我们正在使用MySQL,如果这有关系的话。 - Wim Deblauwe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接