在批量寫數據時,經常碰到一個問題,那就是數據的同步問題。
如銀行系統的轉賬功能,只有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