Добрый день.
База данных - Firebird 2.5
UniDAC 6.0.1
У TUniConnection указано AutoCommit := False;
У TUniQuery присваиваю
Transaction (RO)
UpdateTransaction (RW) (Это глобальная транзакция)
CachedUpdates := True;
Options.AutoPrepare := True;
AutoCommit := False;
у TUniQuery оба свойства (Transaction и UpdateTransaction) указывают на одну и ту же глобальную транзакцию.
после TUniQuery.Open свойство AutoCommit равно True,
TUniQuery.ApplyUpdates стартует какую то новую транзакцию и коммитит её, данные изменены в базе, а мне нужно сделать все в одной транзакции.
Почему TUniQuery считает что мне нужен AutoCommit и почему не смотря а то что UpdateTransaction указана стартует и коммитится какая то новая транзакция ?
Как провести изменения в рамках одной глобальной транзакции?
UniQuery1.Transaction := UniTransaction2;
UniQuery1.UpdateTransaction := UniTransaction2;
UniTransaction1.StartTransaction;
UniTransaction2.StartTransaction;
UniQuery1.open;
UniQuery1.Edit;
UniQuery1.FieldByname('status').AsInteger := UniQuery1.FieldByname('status').AsInteger + 1;
UniQuery1.Post;
UniQuery1.ApplyUpdates();// После этой процедуры данные в базе изменяются, то есть изменены в какой то отдельной транзакции.
UniQuery1.CommitUpdates;
UniQuery1.Close;
UniTransaction2.Commit;
UniTransaction1.Commit;
Спасибо
Вадим Мещеряков
TUniQuery самостоятельно устанавливает AutoCommit в True после Open
Re: TUniQuery самостоятельно устанавливает AutoCommit в True после Open
К сожалению мы не смогли воспроизвести указанное вами поведение на последней версии UniDAC 6.3.13.
Пожалуйста, скачайте последнюю версию UniDAC (на данный момент UniDAC 6.3.13) и проверьте воспроизводится ли на ней указанное вами поведение. Если это не поможет в решении проблемы, пожалуйста, составьте и вышлите на viktorv*devart*com небольшой пример демонстрирующий указанное вами поведение, включающий скрипты для создания объектов БД.
Пожалуйста, скачайте последнюю версию UniDAC (на данный момент UniDAC 6.3.13) и проверьте воспроизводится ли на ней указанное вами поведение. Если это не поможет в решении проблемы, пожалуйста, составьте и вышлите на viktorv*devart*com небольшой пример демонстрирующий указанное вами поведение, включающий скрипты для создания объектов БД.