数据库为了保证数据的一致性,提出了事务的概念。事务就是一系列的SQL语句构成的单元,这些SQL语句要么同时在数据库上执行成功,要么同时失败,不会出现一部分成功,一部分失败的情况,以保证数据的一致性。例如:入库时候,需要在入库单表中增加一条记录,同时要修改库存表中的库存数量,这两个动作如果执行一半就会造成数据不一致。

1. Transaction

1.1. 相关属性和方法

1.2. 用法示例

   1 var
   2   lHandle: TTransactionHandle;
   3 begin
   4   lHandle := DataSet.Connection.Transaction.Start(False);
   5   try
   6     //...在这里处理每一条需要提交的数据数据,并且提交.
   7     DataSet.Connection.Transaction.Commit(lHandle);
   8   except
   9     DataSet.Connection.Transaction.RollBack(lHandle);
  10   end;
  11 end;

2. 立即事务与非立即事务

2.1. 相关属性和方法

2.2. 用法示例

3. 数据集、数据连接与事务

3.1. 用法示例

   1 DataSet2.Connection := DataSet1.Connection;

   1 DataSet3.Connection.Transaction := DataSet1.Connection.Transaction;

   1 DataSet2.Connection := DataSet1.Connection;
   2 DataSet3.Connection.Transaction := DataSet1.Connection.Transaction;

4. 平台上各个数据集所在的事务

5. 业务数据与流程数据的一致性

流程中,默认业务数据和流程数据是在同一个事务中,可以保证业务数据与流程数据的一致。只要在流程事件中对业务数据修改,不需要主动的启动和提交事务,这些事务的控制是由平台来完成的

5.1. 用法示例

在流程成功后,修改数据记录的状态

   1 procedure FlowBroker1AfterFlowOut(Sender: TObject; Command: TFlowOutCommand);
   2 begin
   3   //直接修改字段的值,不需要启动和提交事务.
   4   DataSetBroker1.DataSet.Edit;
   5   DataSetBroker1.DataSet.FieldByName('ZT').AsString := 'F';
   6   DataSetBroker1.DataSet.Post;
   7   DataSetBroker1.DataSet.ApplyUpdates;
   8 end;


数据集类

[[PageComment2()]]

事务 (last edited 2007-08-14 11:48:14 by alang)