求非事务下多个流程的处理方式?逐条循环还是批量处理好?
求非事务下多个流程的处理方式?逐条循环还是批量处理好?
在做一系列处理时,
比如说先查询表A,然后将记录插入B,最后更新A的状态。
除了用存储过程和事务,在C#里面一般有两种做法:
1。在foreach的大循环里面,循环每条查询到的记录,然后插入B,更新A。
即:
foreach(A a in list)
{
//将该记录插入B
//插入成功的话,更新A
}
2。分成三个阶段,每个阶段都是有一个循环。
先查询所有的A,将所有A插入B,返回插入成功的记录主键,然后根据主键批量的更新A表
ilist<A> successList=new List<A>();
foreach(A a in list)
{
//将该记录插入B
//插入成功的话
successList.Add(A);
}
更新时,
foreach(A a in list2)
{
//更新A记录中的状态
}
请问各位高手,哪种写法比较好?
各有什么利弊?
[解决办法]
用事务是最好的,
事务可以保证数据的完整性
而其:如果做批量插入的时,开事务不不开事务要快。
[解决办法]
如果不用事务的话
foreach(A a in list)
{
//将该记录插入B(成功)
//插入成功的话,更新A(这里失败了肿么办。B表的数据还是存在于数据库中了)
}
[解决办法]
同意LZ上的,多条记录操作还是用事务比较好,安全