回滚事务不适用于 TpFIB 组件
Rolling back Transaction Doesn't Work with TpFIB Components
我正在使用 Delphi 2010 和 FIB Components
,例如 TpFIBDataset
、TpFIBTransaction
和 TpFIBDataset
以及 Firebird
数据库。
我已经将 TpFIBDataset 的 'AutoCommit' 属性 设置为 'False',然后当我在 try..finally
块中执行以下语句并回滚时,交易数据仍然会被发布.
代码:
FIBDataset.Post;
下面是示例代码。
代码:
try
FIBDatabase.StartTransaction;
....
Block of Code;
...
finally
if saveALL then
FIBDatabase.CommitRetaining
else
FIBDatabase.RollbackRetaining;
end;
数据集上的交易也必须检查和更改
FIBDataset.AutoCommit := false;
您还需要关闭查询。在这种情况下
FIBDataset.Close;
FIBDatabase.Rollback;
编辑
我还建议您将一个事务组件分配给所有数据集(而不是数据库)。并使用事务组件的start、commit、rollback方法。此外,您必须在执行任何操作之前分配事务组件。
我正在使用 Delphi 2010 和 FIB Components
,例如 TpFIBDataset
、TpFIBTransaction
和 TpFIBDataset
以及 Firebird
数据库。
我已经将 TpFIBDataset 的 'AutoCommit' 属性 设置为 'False',然后当我在 try..finally
块中执行以下语句并回滚时,交易数据仍然会被发布.
代码:
FIBDataset.Post;
下面是示例代码。
代码:
try
FIBDatabase.StartTransaction;
....
Block of Code;
...
finally
if saveALL then
FIBDatabase.CommitRetaining
else
FIBDatabase.RollbackRetaining;
end;
数据集上的交易也必须检查和更改
FIBDataset.AutoCommit := false;
您还需要关闭查询。在这种情况下
FIBDataset.Close;
FIBDatabase.Rollback;
编辑
我还建议您将一个事务组件分配给所有数据集(而不是数据库)。并使用事务组件的start、commit、rollback方法。此外,您必须在执行任何操作之前分配事务组件。