Не срабатывает AutoCommit для Firebird

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Не срабатывает AutoCommit для Firebird

Сообщение 3Hub » Вт 12 янв 2016 20:07

Через грид происходит вставка в таблицу Firebird, датасетом которой является TUniQuery. Для него определена отдельная пишущая транзакция. Свойство SpecificOptions->AutoCommit =true.
Но почему-то после Post транзакция не подтверждается. Только установив в true аналогичное свойсто (AutoCommit ) связанного TUniConnection можно добиться автоматического подтверждения. Это баг или такое поведение было задумано?

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Не срабатывает AutoCommit для Firebird

Сообщение ViktorV » Чт 14 янв 2016 21:08

Это стандартное поведение наших компонентов. У свойства TUniConnection.AutoCommit приоритет выше чем у свойства AutoCommit датасетов (TUniQuery, TUniTable). Если свойство TUniConnection.AutoCommit установлено в False, все транзакции могут быть завершены только явно (независимо от значения свойства AutoCommit датасета).

3Hub
Сообщения: 17
Зарегистрирован: Вт 15 дек 2015 08:59

Re: Не срабатывает AutoCommit для Firebird

Сообщение 3Hub » Сб 16 янв 2016 11:21

Позвольте спросить: а не проще ли управлять автоматикой транзакций только на конкретном DataSet-e?
Ведь для разных компонентов, ссылающихся на один и тот же TUniConnection может понадобиться разное поведение транзакций. Имеет ли смысл AutoCommit TUniConnection без учета значений аналогичного свойства подсоединенных датасетов?

ViktorV
Devart Team
Сообщения: 212
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Не срабатывает AutoCommit для Firebird

Сообщение ViktorV » Вт 19 янв 2016 11:49

Свойство AutoCommit у соединения предназначено для того, чтобы можно было выключить AutoCommit у всех подчиненных датасетов. Если нужно управлять AutoCommit у каждого датасета - нужно оставить значение AutoCommit соединения в True и установить AutoCommit датасетов так, как необходимо для каждого из них.

Закрыто