事務處理實現遠程表的數據更新

時間:2023-03-25 21:11:48 筆試經驗 我要投稿
  • 相關推薦

事務處理實現遠程表的數據更新

事務處理實現遠程表的數據更新
  當使用遠程表中的數據時,事務處理只更新視圖臨時表的本地備份,對遠程基表的更新不起作用。使用SQLSETPROP()啟動人工事務,SQLROLLBAK()和SQLCOMMIT()控制事務處理。
  在自定義類—TRANSACTION中增加方法遠程表事務處理確認—RTRANSCONFIRM和取消(—RTRANSCANCEL)兩種方法。同樣共享數據的各個用戶程序也使用行緩沖。
  — RTRANSCONFIRM 方法
  LPARAMETERS hConnect &&連接句柄
  SQLSETPROP(hConnect,'transmode',DB—TRANSMANUAL)
  Isuccess=TABLEUPDATE(.T.,.F.)
  &&非強制的更新所有修改記錄
  IF Isuccess=.F. &&若失敗
  oROLLBACK &&取消修改,結束事務1
  o=AERROR(aErrors) &&取消事務出錯
  oDO CASE
  CASE aErrors[1,1]=1585 &&當前記錄被其他用戶改過
  =RLOCK() &&記錄加鎖
  FOR nField=1 to FCOUNT()
  &&依次處理每一字段
  cField=FIELD(nField)
  IF OLDVAL(cField)<>CURVAL(cField)
  &&字段被改過,確認修改有效
  DO CASE
  oCASE TYPE(cField)='N'
  oT1=CURVAL(cField)-LDVAL(cField)
  oREPL cField WITH T1+EVAL(cField))
  oOTHEWISE
  oREPL cField WITH CURVAL(cField))
  oENDCASE
  ENDIF
  ENDFOR
  UNLOCK
  =TABLEUPDATE(.T.,.T.) &&強制更新數據
  SQLCOMMIT(hConnect) &&提交事務
  ENDCASE
  oELSE
  oSQLCOMMIT(hConnect) &&提交事務
  oENDIF
  o— RTRANSCANCEL 方法
  LPARAMETERS hConnect &&連接句柄
  oSQLSETPROP(hConnect,'transmode',DB—TRANSMANUAL)
  oISuccess=TABLEUPDATE(.T.,.F.)
  o&&非強制的更新所有修改記錄
  oIF Isuccess=.F. &&若失敗
  ROLLBACK &&取消修改,結束事務1
  =AERROR(aErrors) &&取消事務出錯
  DO CASE
  oCASE aErrors[1,1]=1585 &&當前記錄被其他用戶改過
  o =RLOCK() &&記錄加鎖
  oFOR nField=1 to FCOUNT()
  o&&依次處理每一字段
  ocField=FIELD(nField)
  oIF OLDVAL(cField)<>CURVAL(cField)
  &&字段被改過,確認修改無效,恢復原記錄
  =TABLEREVERT(.F.)
  UNLOCK
  ENDIF
  ENDFOR
  =TABLEUPDATE(.T.,.T.) &&強制更新數據
  SQLCOMMIT(hConnect) &&提交事務
  ENDCASE
  oELSE
  oSQLCOMMIT(hConnect) &&提交事務
  oENDIF
 

【事務處理實現遠程表的數據更新】相關文章:

Excel實現隔多列數據求和教程10-19

Excel中數據要雙擊單元格能更新數據問題的解決方法08-09

sqlplus如何訪問遠程oracle數據庫06-04

構筑企業數據中心 實現理性分析決策06-04

公司事務處理委托書通用06-01

更新心情說說12-16

顯卡驅動怎么更新06-21

新經典語錄更新12-27

更新管理制度04-11

亚洲制服丝袜二区欧美精品,亚洲精品无码视频乱码,日韩av无码一区二区,国产人妖视频一区二区
亚洲成在人天堂在线 | 伊人久久大香线蕉综合热线 | 日韩好吊妞中文字幕在线 | 亚洲精品NV久久久久久久久久 | 日本不卡高清视频v中文字幕 | 亚洲有码中文字幕 |