Что-то не так с этим кодом?
Иногда я получаю необработанное исключение «Недопустимый объект транзакции»:
procedure BlaBla;
var
TD: TDBXTransaction;
begin
TD := SQLConnection.BeginTransaction;
try
SQLConnection.ExecuteDirect('some sql command');
SQLConnection.ExecuteDirect('some sql command');
SQLConnection.CommitFreeAndNil(TD);
except
SQLConnection.RollbackFreeAndNil(TD);
end;
end;
Это исключение вызывается для пользователя, поэтому я предполагаю, что оно вызвано RollbackFreeAndNil, поскольку все остальное находится внутри try..except.
Должен ли я обернуть RollbackFreeAndNil еще одной попыткой ... кроме? Какой беспорядок.
Я использую Delphi 2009, DBX с Firebird 2.1 и драйвером Devart.