事務處理實現本地表的數據更新
- 筆試題目
- 關注:1.94W次
事務處理實現本地表的數據更新
用事務來緩衝對磁盤數據的更新操作,對磁盤數據更新在事務結束之後進行,如果系統不能執行對數據庫的更新操作,則取消整個事務,不執行任何更新操作。
首先建立事務處理自定義類—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.)
&&非強制的更新所有修改記錄
- 文章版權屬於文章作者所有,轉載請註明 https://wjfww.com/qiuzhi/bishi/3ozmwg.html