事務處理實現(xiàn)本地表的數(shù)據(jù)更新
事務處理實現(xiàn)本地表的數(shù)據(jù)更新
用事務來緩沖對磁盤數(shù)據(jù)的更新操作,對磁盤數(shù)據(jù)更新在事務結束之后進行,如果系統(tǒng)不能執(zhí)行對數(shù)據(jù)庫的'更新操作,則取消整個事務,不執(zhí)行任何更新操作。
首先建立事務處理自定義類—TRANSACTION,包括本地表事務處理確認(—TRANSCONFIRM)和本地表事務處理取消(—TRANSCANCEL)兩種方法。這兩種方法的前提條件是訪問共享數(shù)據(jù)的各個用戶程序都使用行緩沖。用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.) &&強制更新數(shù)據(jù)
oEND TRANSACTION &&結束事務2
oENDCASE
ELSE
END TRANSACTION &&結束事務1
ENDIF
o— TRANSCANEL方法
BEGIN TRANSACTION &&開始事務1
Isuccess=TABLEUPDATE(.T.,.F.)
&&非強制的更新所有修改記錄
【事務處理實現(xiàn)本地表的數(shù)據(jù)更新】相關文章:
實現(xiàn)基于網(wǎng)頁的數(shù)據(jù)庫數(shù)據(jù)導入10-06
用SQL實現(xiàn)查詢數(shù)據(jù)不顯示錯誤數(shù)據(jù)的方法11-10
Sql Server、Access數(shù)據(jù)排名的實現(xiàn)方法11-12
JavaScript數(shù)據(jù)結構與算法中集合的實現(xiàn)11-18
如何實現(xiàn)多個硬盤同步數(shù)據(jù)傳輸07-25
貴州安順實現(xiàn)社保卡制卡數(shù)據(jù)自助采集09-22
基于MAPGIS的縣級土地利用現(xiàn)狀數(shù)據(jù)庫更新研究09-02
淺談基于SOA 的數(shù)據(jù)交換中心的設計和實現(xiàn)論文07-08