5,379
社区成员
发帖
与我相关
我的任务
分享
try
ADOConnection.BeginTrans;
....
ADOConnection.CommitTrans;
except
ADOConnection.RollbackTrans;
end;
我简单一点,这样写,行不行。只用这个,不回滚。潜在问题有哪些?
ADOConnection.BeginTrans;
....
ADOConnection.CommitTrans;’
如果数据处理了一半 出现了异常 不回滚那么数据处理到哪 就保存到哪。如果回滚会将之前写入库表的数据撤销,保持数据的一致性。
你需要先了解事务。简单说,你可以这样理解,一批量的去处理数据,A处理完成处理B再处理C,直到N,所有的都处理完成,这些ABC到N里,可能存在一些关联性,如果其中某一个处理(主要是写入,包括修改与删除)出现错误,就可能会影响到其他相关联的数据错误(条件就是,若成功,就必须全部成功,失败则全都没做过)。那么,假如处理到C的时候出现了错误,A与B已完成了,这时候怎么办呢?回滚就是说,错了没关系,把之前的都抹去,等于什么都没做。
然后,你就想想,你的处理中是否需要用到这个回滚,如果不需要,那你为什么要用事务处理呢?