Php 如果事务中发生错误,是否会对表的id索引产生影响?
以下是我在Yii 1.1中的主要交易代码: 试一试{ $transaction=Yii::app->projectdb->beginTransaction; foreach$作为$order列出{ $orderInfo=orderInfo::model->findByPk$order['order_id']; ifempty$orderInfo{ 抛出新异常“空订单信息”; } // ... //将订单数据保存到mysql中 } $transaction->commit; }捕获异常$e{ $transaction->rollBack; } 现在,我发现我的表顺序中缺少IDPhp 如果事务中发生错误,是否会对表的id索引产生影响?,php,mysql,yii,Php,Mysql,Yii,以下是我在Yii 1.1中的主要交易代码: 试一试{ $transaction=Yii::app->projectdb->beginTransaction; foreach$作为$order列出{ $orderInfo=orderInfo::model->findByPk$order['order_id']; ifempty$orderInfo{ 抛出新异常“空订单信息”; } // ... //将订单数据保存到mysql中 } $transaction->commit; }捕获异常$e{ $t
select id from order where id between 10231 and 10280
# id name
# 10231 name_10231
# 10280 name_10280
# missed 50 data
这与上面的交易代码有关吗?当事务中发生错误时,它会添加id的索引吗
如果你能给我一个明确的答复,我将非常感谢 是,它可能与回滚事务相关。如果您在事务期间插入新记录,MySQL会保留此记录的ID并增加自动增量计数器,因此不同的进程可能会在事务期间插入记录,而不会有ID冲突的风险。如果回滚事务,则不会重用此ID。因此,如果您: 公开交易, 插入50条记录, 回滚事务,
由于这50个ID已被保留,但从未提交,您将在IDs列中出现gap。谢谢您的回答,还有更多问题。错误发生的地方不同吗?我的意思是,如果错误发生在model->save操作之前,我会捕获它并回滚,它仍然会自动增加ID吗?否,计数器会通过插入查询增加,这是在save内部执行的。