下面给大家分享事务处理实现本地表的数据更新,本文共2篇,欢迎阅读!

篇1:事务处理实现本地表的数据更新
用事务来缓冲对磁盘数据的更新操作,对磁盘数据更新在事务结束之后进行,如果系统不能执行对数据库的更新操作,则取消整个事务,不执行任何更新操作,
首先建立事务处理自定义类—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.)
&&非强制的更新所有修改记录
篇2:事务处理实现远程表的数据更新
当使用远程表中的数据时,事务处理只更新视图临时表的.本地备份,对远程基表的更新不起作用,使用SQLSETPROP()启动人工事务,SQLROLLBAK()和SQLCOMMIT()控制事务处理。
在自定义类—TRANSACTION中增加方法远程表事务处理确认—RTRANSCONFIRM和取消(—RTRANSCANCEL)两种方法。同样共享数据的各个用户程序也使用行缓冲。
— RTRANSCONFIRM 方法
LPARAMETERS hConnect &&连接句柄
SQLSETPROP(hConnect,'transmode',DB—TRANSMANUAL)
Isuccess=TABLEUPDATE(.T.,.F.)
&&非强制的更新所有修改记录
IF Isuccess=.F. &&若失败
oROLLBACK &&取消修改,结束事务1
o=AERROR(aErrors) &&取消事务出错
oDO CASE
CASE aErrors[1,1]=1585 &&当前记录被其他用户改过
=RLOCK() &&记录加锁
FOR nField=1 to FCOUNT()
&&依次处理每一字段
cField=FIELD(nField)
IF OLDVAL(cField)CURVAL(cField)
&&字段被改过,确认修改有效
DO CASE
oCASE TYPE(cField)='N'
oT1=CURVAL(cField)-LDVAL(cField)
oREPL cField WITH T1+EVAL(cField))
oOTHEWISE
oREPL cField WITH CURVAL(cField))
oENDCASE
ENDIF
ENDFOR
UNLOCK
=TABLEUPDATE(.T.,.T.) &&强制更新数据
★linux tar实现分卷压缩与还原数据方法 linux操作系统
★数据报告
文档为doc格式