tp5.1 事务操作疑问 ?
在进行一个事务操作的时候,多表结构回滚,是全部回滚还是只回滚主表 ?
如:
$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 又使用模型,就代表不是同一个链接对象吗 ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我理解的 Db类获得的链接是单例链接 所以是同一个链接
这种除非连接的不是同一个数据库,正常应该是同一个链接
然后你上面说的是否会回滚,在 C 之前肯定会回滚,在C 之后的都没执行不会回滚也没东西可以回滚