Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Вопрос по транзакциям


Автор: Ch0bits 8.9.2006, 19:10
Как правильно работать с TIBTransaction? Моя проблема в том, что изменения вносимые в базу моей программой не видимы другим пользователям базы. Я выяснил это через IB Expert. Изменения происходят только после завершения работы программы.  smile 
Есть предположение, что вся работа происходит в контексте одной транзакции, которая делает commit после закрытия соединения.

Автор: Kesh 9.9.2006, 09:41
Ch0bits, делай commit сам...

Автор: Ch0bits 9.9.2006, 12:19
Если бы это помогло, то я бы не создавал тему...

Автор: Fedia 11.9.2006, 02:34
Цитата(Ch0bits @  8.9.2006,  19:10 Найти цитируемый пост)
Как правильно работать с TIBTransaction?

Код

IBTransaction1.StartTransaction;
try
  //вносим изменения
  IBTransaction1.Commit; 
except
  IBTransaction1.RollBack;
end;


Цитата(Ch0bits @  9.9.2006,  12:19 Найти цитируемый пост)
Если бы это помогло, то я бы не создавал тему...

Тогда маловато информации для точного ответа вопрос. Возможно часть кода, отвечающего за модификацию данных прояснило бы ситуацию.
Можно также попробовать создать "чистое" тестовое приложение, реализующее простую транзакцию и работая с ним изучить процесс модификации данных БД.

Автор: samurai 12.9.2006, 07:39
Предлагаю проверть параметры транзакции, чтобы не было конфликтов версионности smile
я использую такие абсолютно для всех транзакций:
Код

read_committed
rec_version
nowait

такие транзакции будут читать только закоммитенные записи, если появляется конфликт - зависания не будет, т.к. rollback и т.д. 
http://www.ibase.ru/devinfo/ibtrans.htm

и конечно делать старт и commit(rollback) и ловить исключения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)