事务处理实现本地表的数据更新

时间:2018-12-31 12:00:00 资料大全 我要投稿

事务处理实现本地表的数据更新

事务处理实现本地表的数据更新
  用事务来缓冲对磁盘数据的更新操作,对磁盘数据更新在事务结束之后进行,如果系统不能执行对数据库的更新操作,则取消整个事务,不执行任何更新操作,

事务处理实现本地表的数据更新


  首先建立事务处理自定义类—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.)
  &&非强制的更新所有修改记录

【事务处理实现本地表的数据更新】相关文章:

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

2.VFP事务处理的控制命令及其应用

3.与时俱进更新工作的观念

4.实现梦想的法则

5.求职信中如何更好地表示自己?

6.Prototype如何更新局部页面

7.怎样文雅地表达“去卫生间”

8.职场上要适当地表现自己