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

标签 php laravel transactions

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

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

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

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

最佳答案

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

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

关于php - Laravel:如果您不提交或回滚您手动启动的事务怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743093/

相关文章:

php - 来自 MySQL 数据库的动态变量

php - 检索当前用户的 linux 密码

php - 如何删除键并从 PHP 数组返回值?

mysql - 如何获取过去7天的总用户平均时间

laravel - 使用 VueJS 和 Laravel 的实时搜索引擎

MySQL : transaction within a stored procedure

mysql - 使用 hibernate @Transactional 插入到表中

javascript - 如何上传照片但不同的文件夹?

php - Laravel orderBy 排序不正确

Java、转账服务和并发问题