就业数据资源平台
当前位置:首页 > 笔试经验
事务处理实现远程表的数据更新


事务处理实现远程表的数据更新

  当使用远程表中的数据时,事务处理只更新视图临时表的本地备份,对远程基表的更新不起作用。使用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.) &&强制更新数据

就业数据资源平台