Откат транзакции не работает с компонентами TpFIB

Я использую Delphi 2010 с FIB Components лайк TpFIBDataset, TpFIBTransaction а также TpFIBDataset с Firebird база данных.

Я уже установил свойство 'AutoCommit' TpFIBDataset в 'Ложь', тогда также, когда я выполняю нижеприведенный оператор в try..finally заблокировать и откатить данные транзакции по-прежнему публикуются.

Код:

FIBDataset.Post;

Ниже приведен пример кода.

Код:

try
  FIBDatabase.StartTransaction;

       ....

          Block of Code;

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

1 ответ

Решение

Транзакция с набором данных также должна быть проверена и изменена.

FIBDataset.AutoCommit := false;

Вам также необходимо закрыть запрос. В этом случае

FIBDataset.Close;
FIBDatabase.Rollback;

РЕДАКТИРОВАТЬ

Я бы также посоветовал вам выделить один компонент транзакции для всех наборов данных (а не для базы данных). И используйте методы start, commit, rollback компонента транзакции. Кроме того, вы должны назначить компонент транзакции перед выполнением каких-либо операций.

Другие вопросы по тегам