UpdateBatch与事务处理的一点总结

对于某些设置或者提交,如果希望是全部修改完毕后才确定生效,可以将DataSet的LockType:=ltBatchOptimistic,这样就可以了。然后每次做的修改和改动都暂时保存在缓存中,必须通过UpdateBatch来提交入库。可以通过判断DataSet的UpdateStatus属性是否为usUnmodified就可以知道先前是否已经提交了改动了。

注意:对于用户已经Edit,但是未提交的修改,也要注意提示用户保存。由于没有提交前UpdateStatus并没有发生变化,所以还要注意判断是否ADOTable1.State=dsBrowse,以便提示用户是否保存。

if (ADOTable1.UpdateStatus<>usUnmodified) or (Not (ADOTable1.State=dsBrowse)) then
    begin
    end;

这个用法也可以通过事务实现,操作前先通过ADOConnection的BeginTrans开始事务,提交修改是CommitTrans,回滚是RollbackTrans,判断是否处于事务中读取InTransaction属性即可。事务也有一个缺点,就是DataSet没有事务,如果多个DataSet使用一个ADOConnection,如果使用事务势必影响其他操作。而且有文章说事务处理起来比较耗费资源,至少比UpdateBatch费资源,呵呵~

原文地址:https://www.cnblogs.com/jijm123/p/10246728.html

时间: 2024-11-10 08:23:45

UpdateBatch与事务处理的一点总结的相关文章

pdo事务处理的一点总结

事务:由多个原子操作组成,所谓原子操作即单个操作和功能,该操作会立即执行. 事务处理流程: 1.关闭自动提交功能 2.开启事务处理模块 3.事务处理(成功->提交,失败->回滚) 4.重新开启自动提交功能 以数据库mysql为例,目前mysql支持事务的数据库(表)引擎常用的是innodb,而在数据库中可以存在多中不同的表引擎的表,故pdo默认是自动提交的原子操作.事务处理为多原子的结合操作,所以在需使用pdo事务处理时需关闭自动提交功能.

第一次接触终极事务处理——Hekaton

在这篇文章里,我想给出如何与终极事务处理(Extreme Transaction Processing (XTP) )的第一步接触,即大家熟知的Hakaton.如果你想对XTP有个很好的概况认识,我推荐Kalen Delaney写的关于它的白皮书,另外微软研究院也发布了题为“对于内存数据库的高性能并发控制机制(High-Performance Concurrency Control Mechanisms for Main-Memory Databases)”的研究白皮书,点此下载. 所有XTP维

JDBC的进化3--补充:事务处理

接着JDBC的进化3,我们来说数据库事务. 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态. 怎么理解呢? 一组逻辑单元:我认为指的是多条的DML操作,只是一条DML语句的话,对于mysql来说,执行完成功就自动提交了,没成功的话,就没成功喽,这样说来,一条DML语句就相当于一个原子,不可再分了. 从一种状态变换到另一种状态:即这组操作是成功了还是失败了,他们必须同时都成功,有一个失败,就退回到起点.例如银行的转账,不能一个成功,一个失败吧. 来看看JDBC的事务处理: 先来看看,在什

分布式系统的事务处理【转】

转:http://coolshell.cn/articles/10910.html 当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求. 2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失. 于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题. 通常,我们会通过两种手段来扩展我们的数据服务: 1)数据分区:就是把数据分块放在不同的服务器上(如:uid %

分布式系统的事务处理

转自:http://coolshell.cn/articles/10910.html 当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求. 2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失. 于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题. 通常,我们会通过两种手段来扩展我们的数据服务: 1)数据分区:就是把数据分块放在不同的服务器上(如:uid

07_NoSQL数据库之Redis数据库:Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存

 事务处理 Redis对事务的支持目前还比较简单.Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令.当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令. 127.0.0.1:6379> get age (nil) 127.0.0.1:6379> multi OK                

Spark版本定制第4天:Exactly Once的事务处理

本期内容: 1 Exactly once 容错 2 数据输出不重复 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark streaming这个复杂的应用程

转:有事务处理的NoSQL数据库

原文来自于:http://www.infoq.com/cn/articles/MarkLogic-NoSQL-with-Transactions Java平台在其几乎整个生命周期中,都在煞费苦心地努力将数据库持久化功能无缝提供给开发人员.你是否已经尝试了早期的JDBC规范.EJB.O/R映射如Hibernate,或者最近的JPA规范,这一路上你不太可能没有遇到过关系型数据库.也许很可能你已经明白了面向对象建模与关系型数据库如何存储数据的区别(有时候开发人员称之为阻抗不匹配). 然而最近,NoSQ

PHP与MYSQL事务处理

PHP与MYSQL事务处理 2016-03-28 fal PHP编程 MYSQL的事务处理主要有两种方法. 1.用begin,rollback,commit来实现 begin 开始一个事务 rollback 事务回滚 commit 事务确认 2.直接用set来改变mysql的自动提交模式 MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过 set autocommit=0 禁止自动提交 set autocommit=1 开启自动提交 来实现事务的处理. 当你用 s