genexus中用procedure寫數據到表時用事務處理處理

在批量寫數據時,經常碰到一個問題,那就是數據的同步問題。

如銀行系統的轉賬功能,只有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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章