Laravel雄辩的ORM交易:为什么我们需要回滚?

时间:2019-08-29 11:31:03

标签: php mysql sql laravel-5

为什么我们可以在不使用多个查询的情况下使用DB::rollback()。如下:

DB::beginTransaction();
 //database queries here

 //even if any errors pop up here, it won't reach DB::commit() and code won't get committed
DB::commit();

在上述情况下,即使任何语句失败,提交也永远不会发生,并且事务也不会处理。所以回滚不是必需的还是必需的?

3 个答案:

答案 0 :(得分:1)

通常不使用回滚,以便在发生某些错误时停止当前流,而是使用回滚,以便可以撤消对事务或数据库所做的任何更改,直到错误点为止。

因此,这不是强制性的,但仅保留相关数据是非常可取的。

答案 1 :(得分:0)

回滚
就我而言,我在使用付款流程时会使用回滚,例如在用户必须使用贝宝(Paypal)帐户支付注册费后必须创建具有完整信息的用户,如果无法支付用户信息,则会回滚

答案 2 :(得分:0)

回滚的使用:-

DB::beginTransaction();
try{
  //save in table 1

  //save in table 2

  //save in table 3....with a sql error
DB::commit();
}catch(){

DB::rollback(); //if rollback due to error occurs in query 3 then no data will be saved in table 1 and 2...Not Mandatory

}