在进行一个事务操作的时候,多表结构回滚,是全部回滚还是只回滚主表 ?
如:
$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类获得的链接是单例链接 所以是同一个链接