以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- for循环中事务回滚能实现吗 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=195015) |
-- 作者:vimin -- 发布时间:2025/2/16 21:06:00 -- for循环中事务回滚能实现吗 我现在碰到一个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两个表保存过了,这种情况,第二条异常的时候,能回滚整个操作吗? 望大神指点一下思路。
|
-- 作者:有点蓝 -- 发布时间:2025/2/16 21:31:00 -- 如果事务是在for循环之外启动的,可以也肯定会回滚整个操作。 如果事务是在for循环之内启动的,只能回滚当前操作。
|
-- 作者:vimin -- 发布时间:2025/2/16 22:22:00 -- 好的,那我明白了,我以为SAVE()了就写进数据库了,无法回滚了 |