在批量写数据时,经常碰到一个问题,那就是数据的同步问题。
如银行系统的转账功能,只有A转账到B 成功,B帐号接收成功,整个转账功能就算全部完成,否则回滚数据。
A : 100w - 1w = 99w B 如果接收错误,有可能是异地的网络问题等, 这样系统就要回滚数据即A:100w
否则数据就无缘无故的少钱了。
在genexus中也有事务处理,但有些区别
for &i = 1 to 9999
new
ClassId = &i
ClassName = 'class'+trim(str(ClassId))
endnew
if &ERR = 1//语法是这样的,必须的,&err是系统自定义变量
for each//语法是这样的,必须的,否则系统不会执行if语句了
where ClassId = &i
rollback//回滚前面的数据
return//必须退出,否则for循环又重新开始事务了
//又重新写后面的数据了。
//msg('err')
endfor
endif
endfor