Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共3 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
vimin 发表于: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楼
有点蓝 发表于:2025/2/16 21:31:00
如果事务是在for循环之外启动的,可以也肯定会回滚整个操作。

如果事务是在for循环之内启动的,只能回滚当前操作。
3楼
vimin 发表于:2025/2/16 22:22:00
好的,那我明白了,我以为SAVE()了就写进数据库了,无法回滚了
共3 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 2 queries.