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

时间:2020-10-28 19:22:10 笔试经验 我要投稿

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

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

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

实现基于网页的数据库数据导入10-06

用SQL实现查询数据不显示错误数据的方法11-10

Sql Server、Access数据排名的实现方法11-12

JavaScript数据结构与算法中集合的实现11-18

如何实现多个硬盘同步数据传输07-25

贵州安顺实现社保卡制卡数据自助采集09-22

基于MAPGIS的县级土地利用现状数据库更新研究09-02

浅谈基于SOA 的数据交换中心的设计和实现论文07-08

OPC实现的PKS组态王的数据通信论文12-04

实现PHP获取表单数据与HTML嵌入PHP脚本的技巧11-14