我现在碰到一个for循环中想回滚的需求,代码就不提了,不知道怎么写,把思路写一下,帮我看看有没有可能实现。
库存表A,入库记录表B。
接受“货号=x”和“货号=y”的两条数据记录。
for each 货号 in ...
sql.CommandText = "select * fr om {A} where 货号 = x"
tbA = sql.ExecuteReader(True)
sql.CommandText = "select * fr om {B} where 货号 = x"
tbB = sql.ExecuteReader(True)
A...操作,B...操作
A.save()
B.save()
If a.HasChanges OrElse b.HasChanges Then '如果任何一个表保存失败
cmd.Rollback() '则回滚事务
Else
cmd.Commit() '否则提交事务
End Ifnext
上面大概这么个意思。
我是希望第一条货号=X时成功,但第二条货号=Y有问题时能回滚。但第一条通过时A、B两个表保存过了,这种情况,第二条异常的时候,能回滚整个操作吗?
望大神指点一下思路。
如果事务是在for循环之外启动的,可以也肯定会回滚整个操作。
如果事务是在for循环之内启动的,只能回滚当前操作。
好的,那我明白了,我以为SAVE()了就写进数据库了,无法回滚了