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) 如果抛异常了,会导致部分数据没有办法进行操作了。最外层加事务?
请问大神有什么好的解决方法吗?求指导~感激不尽!
需要保证所有的数据都同时操作成功,或者同时操作失败。
是指如果a10操作失败了,全部数据回滚到a1操作前吗?如果是这样的话,当然是吧事务放在循环外层最合适。如果只是 “a1插入后得到的主键ID更新到b1的一个字段” 是一个事务,其中任意一组操作失败不影响其他组操作的话,还是应该将事务放在循环内。