咨询一个关于事务问题

NEEZA哪吒 2022-06-10 13:31:16

try
ADOConnection.BeginTrans;
....
ADOConnection.CommitTrans;
except
ADOConnection.RollbackTrans;
end;

 

 

我简单一点,这样写,行不行。只用这个,不回滚。潜在问题有哪些?

ADOConnection.BeginTrans;
....
ADOConnection.CommitTrans;’

...全文
71 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

如果数据处理了一半 出现了异常 不回滚那么数据处理到哪 就保存到哪。如果回滚会将之前写入库表的数据撤销,保持数据的一致性。

  • 打赏
  • 举报
回复 1
tanqth 06-10

你需要先了解事务。简单说,你可以这样理解,一批量的去处理数据,A处理完成处理B再处理C,直到N,所有的都处理完成,这些ABC到N里,可能存在一些关联性,如果其中某一个处理(主要是写入,包括修改与删除)出现错误,就可能会影响到其他相关联的数据错误(条件就是,若成功,就必须全部成功,失败则全都没做过)。那么,假如处理到C的时候出现了错误,A与B已完成了,这时候怎么办呢?回滚就是说,错了没关系,把之前的都抹去,等于什么都没做。

然后,你就想想,你的处理中是否需要用到这个回滚,如果不需要,那你为什么要用事务处理呢?

  • 打赏
  • 举报
回复 1
相关推荐
发帖
Delphi

5124

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2022-06-10 13:31
社区公告
暂无公告