Foxtable(狐表)用户栏目专家坐堂 → for循环中事务回滚能实现吗


  共有121人关注过本帖树形打印复制链接

主题:for循环中事务回滚能实现吗

帅哥哟,离线,有人找我吗?
vimin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:161 积分:1580 威望:0 精华:0 注册:2018/4/11 21:01:00
for循环中事务回滚能实现吗  发帖心情 Post By:2025/2/16 21:06:00 [只看该作者]

我现在碰到一个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 
If
next

上面大概这么个意思。
我是希望第一条货号=X时成功,但第二条货号=Y有问题时能回滚。但第一条通过时A、B两个表保存过了,这种情况,第二条异常的时候,能回滚整个操作吗?
望大神指点一下思路。

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112351 积分:572011 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/2/16 21:31:00 [只看该作者]

如果事务是在for循环之外启动的,可以也肯定会回滚整个操作。

如果事务是在for循环之内启动的,只能回滚当前操作。

 回到顶部
帅哥哟,离线,有人找我吗?
vimin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:161 积分:1580 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2025/2/16 22:22:00 [只看该作者]

好的,那我明白了,我以为SAVE()了就写进数据库了,无法回滚了

 回到顶部