事务处理实现本地表的数据更新
事务处理实现本地表的数据更新
用事务来缓冲对磁盘数据的更新操作,对磁盘数据更新在事务结束之后进行,如果系统不能执行对数据库的更新操作,则取消整个事务,不执行任何更新操作,
事务处理实现本地表的数据更新
。首先建立事务处理自定义类—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.)
&&非强制的更新所有修改记录
【事务处理实现本地表的数据更新】相关文章:
4.实现梦想的法则