事務處理實現本地表的數據更新
事務處理實現本地表的數據更新
用事務來緩沖對磁盤數據的更新操作,對磁盤數據更新在事務結束之后進行,如果系統不能執行對數據庫的'更新操作,則取消整個事務,不執行任何更新操作。
首先建立事務處理自定義類—TRANSACTION,包括本地表事務處理確認(—TRANSCONFIRM)和本地表事務處理取消(—TRANSCANCEL)兩種方法。這兩種方法的前提條件是訪問共享數據的各個用戶程序都使用行緩沖。用CURSORSETPROP(“Buffering”,3)將表設置成開放式行緩沖方式。
—TRANSCONFIRM 方法
BEGIN TRANSACTION &&開始事務1
Isuccess=TABLEUPDATE(.T.,.F.)
&&非強制的更新所有修改記錄
IF Isuccess=.F. &&若失敗
oROLLBACK &&取消修改,結束事務1
o=AERROR(aErrors) &&取消事務出錯
oDO CASE
ooCASE aErrors[1,1]=1585
&&當前記錄被其他用戶改過
=RLOCK() &&記錄加鎖
FOR nField=1 to FCOUNT()
&&依次處理每一字段
cField=FIELD(nField)
IF OLDVAL(cField)<>CURVAL(cField)
o&&字段被改過,確認修改有效
oDO CASE
CASE TYPE(cField)='N'
T1=CURVAL(cField)-LDVAL(cField)
REPL cField WITH T1+EVAL(cField))
oOTHEWISE
oREPL cField WITH CURVAL(cField))
oENDCASE
oENDIF
oENDFOR
oUNLOCK
oBEGIN TRANSACTION &&開始事務2
o=TABLEUPDATE(.T.,.T.) &&強制更新數據
oEND TRANSACTION &&結束事務2
oENDCASE
ELSE
END TRANSACTION &&結束事務1
ENDIF
o— TRANSCANEL方法
BEGIN TRANSACTION &&開始事務1
Isuccess=TABLEUPDATE(.T.,.F.)
&&非強制的更新所有修改記錄
【事務處理實現本地表的數據更新】相關文章:
實現基于網頁的數據庫數據導入10-06
用SQL實現查詢數據不顯示錯誤數據的方法11-10
Sql Server、Access數據排名的實現方法11-12
如何實現多個硬盤同步數據傳輸07-25
貴州安順實現社?ㄖ瓶〝祿灾杉09-22
OPC實現的PKS組態王的數據通信論文12-04