回滚事务不适用于TpFIB组件

时间:2015-06-11 12:45:38

标签: delphi delphi-2010 fibplus

我正在使用Delphi 2010与FIB Components TpFIBDatasetTpFIBTransactionTpFIBDataset以及Firebird数据库。

我已经设置了TpFIBDataset' AutoCommit'属性为' False',然后当我在try..finally块中执行以下语句并回滚时,交易数据仍然会被发布。

代码:

FIBDataset.Post;

以下是示例代码。

代码:

try
  FIBDatabase.StartTransaction;

       ....

          Block of Code;

       ...
    finally
      if saveALL then
        FIBDatabase.CommitRetaining
      else
        FIBDatabase.RollbackRetaining;
    end;

1 个答案:

答案 0 :(得分:0)

还必须检查并更改数据集上的交易

FIBDataset.AutoCommit := false;

您还需要关闭查询。在这种情况下

FIBDataset.Close;
FIBDatabase.Rollback;

修改

我还建议您将一个事务组件分配给所有数据集(而不是数据库)。并使用事务组件的start,commit,rollback方法。此外,您必须在执行任何操作之前分配事务组件。