- 相關(guān)推薦
事務(wù)處理實現(xiàn)本地表的數(shù)據(jù)更新
事務(wù)處理實現(xiàn)本地表的數(shù)據(jù)更新
用事務(wù)來緩沖對磁盤數(shù)據(jù)的更新操作,對磁盤數(shù)據(jù)更新在事務(wù)結(jié)束之后進(jìn)行,如果系統(tǒng)不能執(zhí)行對數(shù)據(jù)庫的更新操作,則取消整個事務(wù),不執(zhí)行任何更新操作,
事務(wù)處理實現(xiàn)本地表的數(shù)據(jù)更新
。首先建立事務(wù)處理自定義類—TRANSACTION,包括本地表事務(wù)處理確認(rèn)(—TRANSCONFIRM)和本地表事務(wù)處理取消(—TRANSCANCEL)兩種方法。這兩種方法的前提條件是訪問共享數(shù)據(jù)的各個用戶程序都使用行緩沖。用CURSORSETPROP(“Buffering”,3)將表設(shè)置成開放式行緩沖方式。
—TRANSCONFIRM 方法
BEGIN TRANSACTION &&開始事務(wù)1
Isuccess=TABLEUPDATE(.T.,.F.)
&&非強制的更新所有修改記錄
IF Isuccess=.F. &&若失敗
oROLLBACK &&取消修改,結(jié)束事務(wù)1
o=AERROR(aErrors) &&取消事務(wù)出錯
oDO CASE
ooCASE aErrors[1,1]=1585
&&當(dāng)前記錄被其他用戶改過
=RLOCK() &&記錄加鎖
FOR nField=1 to FCOUNT()
&&依次處理每一字段
cField=FIELD(nField)
IF OLDVAL(cField)<>CURVAL(cField)
o&&字段被改過,確認(rèn)修改有效
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 &&開始事務(wù)2
o=TABLEUPDATE(.T.,.T.) &&強制更新數(shù)據(jù)
oEND TRANSACTION &&結(jié)束事務(wù)2
oENDCASE
ELSE
END TRANSACTION &&結(jié)束事務(wù)1
ENDIF
o— TRANSCANEL方法
BEGIN TRANSACTION &&開始事務(wù)1
Isuccess=TABLEUPDATE(.T.,.F.)
&&非強制的更新所有修改記錄
【事務(wù)處理實現(xiàn)本地表的數(shù)據(jù)更新】相關(guān)文章:
Prototype如何更新局部頁面07-16
早安心語最新更新09-16
每日更新早安心語大全05-17
每日更新早安心語圖06-25
早安問候語每日更新06-29
實現(xiàn)夢想的法則10-19
早安問候語大全每日更新06-26
關(guān)于早安問候語每日更新08-31
遞歸實現(xiàn)回文判斷09-27
中小學(xué) 方案最新(更新版)09-28