感觉事务中的rollback方法可以省略 [ 求助交流 ]
$transaction = Customer::getDb()->beginTransaction();
try {
$customer = new Customer();
$customer->id = 1;
$customer->save();
$customer = new Customer();
$customer->id = 2;
$customer->save();
$customer = new Customer();
$customer->id = 3;
$customer->save();
$transaction->commit();
} catch(\Exception $e) {
$transaction->rollBack();
throw $e;
}
如上代码,$transaction->rollBack();
这行代码感觉可有可无,去掉之后,如果数据库执行异常了,所有try里面的数据库操作都不会被执行
共 1 条回复
-
感觉你没有完全理解事务的作用,事务的作用是确保事务里的多条语句要么全部成功执行,要么全部不执行,而不能只执行其中的一部分。
例子里的三条语句,如果不启用rollback,是有可能出现只有前面的一条或两条语句执行成功,而后面的语句执行失败的情况的。
如果使用了rollback,执行成功的语句就会回滚,这样三条语句都不会执行。共 2 条回复liangkaixin , YiiSoEasy 觉得很赞
aszx0413
注册时间:2016-03-31
最后登录:2025-01-12
在线时长:13小时6分
最后登录:2025-01-12
在线时长:13小时6分
- 粉丝1
- 金钱50
- 威望0
- 积分180