Laravel 4 DB 事务未提交和回滚

Posted

技术标签:

【中文标题】Laravel 4 DB 事务未提交和回滚【英文标题】:Laravel 4 DB transactions not committing and rollbacking 【发布时间】:2019-05-29 01:30:42 【问题描述】:

我正在使用 laravel 4 并尝试使用 提交和回滚功能。但是功能对我不起作用。

我正在关注 laravel 文档 (https://laravel.com/docs/4.2/database#database-transactions),但它仍然无法正常工作。

这是我的代码:

DB::transaction(function() use ($product)
 
     DB::table('products')->insert($product);           
     DB::rollBack();
 );

它在产品表中创建新条目。这是错误的。

【问题讨论】:

【参考方案1】:

在您的示例中,事务只会在出现异常时回滚。

注意:事务闭包中抛出的任何异常都会导致事务自动回滚。

您必须手动以DB::beginTransaction() 开始您的事务并以DB::rollback()DB::commit() 结束它

也可以在 try catch 语句中执行此操作。

try 
    DB::beginTransaction();

    // Do something

    DB::commit();
 catch (\Exception $e) 
    DB::rollback();
    throw $e;

【讨论】:

以上是关于Laravel 4 DB 事务未提交和回滚的主要内容,如果未能解决你的问题,请参考以下文章

Grails:未刷新的会话和回滚的事务有啥区别?

什么是事务事务中的提交和回滚是什么意思

如何在休眠中处理多个会话事务提交和回滚?

mysql事务的提交和回滚

在只有选择的事务中提交和回滚之间有区别吗?

如何使用 codeigniter 中的事务进行基于数据更改的提交和回滚?