delphi使用ODAC控件事务处理(缓存提交)

ODAC中事务处理(缓存提交模式)

使用CachedUpdates属性可以为数据集启用或禁用缓存更新。 将CachedUpdates设置为True可将对数据集的更新存储在客户端的内部缓存中,而不是直接写入数据集的对应的数据库表中。 数据处理完成后,将所有缓存的更改写入数据库。

property CachedUpdates: boolean default False;

相关函数

procedure ApplyUpdates; overload; virtual;  //将数据集的暂挂缓存更新写入数据库。
procedure RestoreUpdates;  //将更新缓存中的所有记录标记为未更新状态。
procedure CommitUpdates;  //清除缓存的更新缓冲区,标记为提交状态。
procedure CancelUpdates;  //从缓存中清除所有未提交(CommitUpdates)的缓存更新,并将数据集恢复为其先前状态。

 

用法

  OraSession.StartTransaction;
  try
    //数据处理
    OraQuery1.ApplyUpdates;  //尝试将OraQuery1更新写入数据库
    OraQuery2.ApplyUpdates;  //尝试将OraQuery2更新写入数据库
    OraSession.Commit;  //成功后,提交更改
  except
    OraQuery1.RestoreUpdates;  //恢复OraQuery1中记录的更新状态
    OraQuery2.RestoreUpdates;  //恢复OraQuery2中记录的更新状态
    OraSession.Rollback;  //失败后,撤消更改
    //处理异常(引发异常或离开),防止继续进行
  end;
  OraQuery1.CommitUpdates;  //成功后,清除OraQuery1的缓存
  OraQuery2.CommitUpdates;  //成功后,清除OraQuery2的缓存

 

备注

调用TOraSession.ApplyUpdates方法,将连接当前Session的所有CachedUpdates为True数据集中所有暂挂的缓存更新写入数据库中。 ApplyUpdates方法将缓存的数据传递到数据库,负责提交或回滚事务,并在操作成功时清除缓存。

使用TOraSession.ApplyUpdates是更新数据集的首选方法,而不是调用每个单独数据集的ApplyUpdates方法。

  //设置连接
  OraQuery1.Session := OraSession;
  OraQuery1.CachedUpdates := True;
  OraQuery2.Session := OraSession;
  OraQuery2.CachedUpdates := True;
  try
    //数据处理
    OraSession.ApplyUpdates;  //尝试将连接到OraSession的OraQuery1和OraQuery2的缓存更新写入数据库
    //成功后,自动提交更改。失败后,自动撤消更改
    //Commit成功后,自动清除OraQuery1和OraQuery2的缓存
  except
    OraQuery1.RestoreUpdates; //恢复OraQuery1和OraQuery2中记录的更新状态
    OraQuery2.RestoreUpdates;
  end;

 

posted @ 2020-10-18 15:24  txgh  阅读(392)  评论(0编辑  收藏  举报