Yii2 php循环使用mysql事务
hi,各位好。
现在有十条数据需要插入,同时有十条数据需要更新。暂记需要插入的数据为a1,a2,a3...a10,需要更新的数据为b1,b2,b3...b10。
需要保证所有的数据都同时操作成功,或者同时操作失败。(即事务)。
而且需要将 a1插入后得到的主键ID更新到b1的一个字段,a2更新到b2的一个字段,依次类推。
我现在的做法是:
foreach($arr_a AS $a){
//开启事务
//插入 a1 得到 id1
//将ID更新到 b1
//结束事务或者回滚事务
}
但是这样的话会有几个问题:
(1) 循环里面使用事务会导致性能问题吧?
(2) 如果抛异常了,会导致部分数据没有办法进行操作了。最外层加事务?
请问大神有什么好的解决方法吗?求指导~感激不尽!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
需要保证所有的数据都同时操作成功,或者同时操作失败。
是指如果a10操作失败了,全部数据回滚到a1操作前吗?如果是这样的话,当然是吧事务放在循环外层最合适。如果只是 “a1插入后得到的主键ID更新到b1的一个字段” 是一个事务,其中任意一组操作失败不影响其他组操作的话,还是应该将事务放在循环内。
事务锁很耗性能,最好在循环的外面放事务,这样可以一起成功或者一起失败。