为了账号安全,请及时绑定邮箱和手机立即绑定

thinkphp5 try catch 事务疑问

thinkphp5 try catch 事务疑问

PHP
牧羊人nacy 2019-03-06 08:24:25
方式1 Db::startTrans(); try{ Db::name('table1')->update(1); Db::name('table2')->update(2); Db::commit(); }catch(){ Db::rollback(); } 方式2 $status = false; Db::startTrans(); try{ $res = Db::name('table1')->update(1); $res1 = Db::name('table2')->update(2); if($res && $res1) { $status = true; Db::commit(); } }catch(){ Db::rollback(); } 这两种方式用的哪一种更好 我之前一直都是使用第一种,不知道会有什么毛病不?
查看完整描述

5 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

没必要啊,错误了自然会到catch里面去啊

查看完整回答
反对 回复 2019-03-18
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

看业务场景,如果后续不需要回滚结果,使用第一个就行。

查看完整回答
反对 回复 2019-03-18
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

我觉得方法1很好,很简洁。try catch可以捕获到很多的错误,像这个sql语句执行错误肯定是可以的。第二种方法略有瑕疵,在判断是否成功的情况下应该用!==false,不然在修改0条记录的情况下你会误判为失败而回滚。

查看完整回答
反对 回复 2019-03-18
?
DIEA

TA贡献1820条经验 获得超2个赞

方法一好一些,tra..catch..机制可以捕捉到你sql的错误了,没有必要再做额外的判断。
而且这样写简洁明了

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 1957 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信