问答

tp5.1 事务操作疑问 ?

作者:admin 2021-06-29 我要评论

在进行一个事务操作的时候,多表结构回滚,是全部回滚还是只回滚主表 ? 如: $modelA-startTrans(); try { $modelA-save($datas…);$modelB-save($datas…);$mod...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

在进行一个事务操作的时候,多表结构回滚,是全部回滚还是只回滚主表 ?

如:
$modelA->startTrans();
try {

$modelA->save($datas…);
$modelB->save($datas…);
$modelC->save($datas…);
// cache error
$modelD->save($datas…);
……
$modelA->commit();

} catch(Error $e) {

$modelA->rollback();

}

执行到 $modelC 的时候发生错误,ABD 都会回滚么 ?

作者有句话:
事务操作一定要谨记一条,必须是相同的数据库连接对象

这个相同的数据库链接对象怎么理解 ?
Db::name('tableA')->todo
Db::name('tableB')->todo
他们是相同的链接对象吗 ?

$modelA $modelB … 他们是同一个链接对象吗 ?

如果在 try 语句中,即使用 DB 又使用模型,就代表不是同一个链接对象吗 ?

###

我理解的 Db类获得的链接是单例链接 所以是同一个链接

###
Db::name('tableA')->todo  
Db::name('tableB')->todo

这种除非连接的不是同一个数据库,正常应该是同一个链接
然后你上面说的是否会回滚,在 C 之前肯定会回滚,在C 之后的都没执行不会回滚也没东西可以回滚

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • tp5.1 事务操作疑问 ?

    tp5.1 事务操作疑问 ?

  • php7.2安装swoole_loader72报错

    php7.2安装swoole_loader72报错

  • 最近写了几个sql,查询起来很慢,走了索

    最近写了几个sql,查询起来很慢,走了索

  • Unity开发的游戏应该可以同时支持Ios A

    Unity开发的游戏应该可以同时支持Ios A

腾讯云代理商
海外云服务器