【问题标题】:Laravel: What if you don't commit or rollback the transaction you started manually?Laravel:如果你不提交或回滚手动启动的事务怎么办?
【发布时间】:2016-06-10 08:06:53
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你找到答案了吗?

标签: php laravel transactions


【解决方案1】:

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

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

【讨论】:

  • 如果重要的话,我们正在使用 MySQL
猜你喜欢
  • 2018-09-21
  • 2021-11-06
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多