Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ожидание завершения транзакции [D6, Firebird]


konrads ©   (2011-08-25 07:56:00) 

Ситуация такая:

Программа использует ХП, до вызова ХП происходит старт транзакции, затем изменения в БД и затем ХП производит итоговый расчёт с записью результатов.
Процесс от начала старта транзакции до Commit довольно продолжительный (до 10 секунд).

Проблема в том что этот процесс может быть запущен практически одновременно с нескольких компьютеров.

Собственно вопрос:
Как в программе проконтролировать наличие активных транзакций запущенных в базе с других компьютеров и запустить свою сразу по завершении уже запущеных.

В качестве доступа к FB использую IBX


O.O   (2011-08-25 10:52:00) [1]

Спасибо, почитаю, попробую разобраться. В моём случае, чтоб не перереабатывать сильно код, идеальным вариантом была бы возможность открывать транзакцию с параметрами "write consistency" только в случае если в базне не открыта другая такая же транзакция от другого пользователя, а если открыта - повторить попытку, типа постановки в очередь.


Sergey13   (2011-08-25 09:23:00) [2]

ИМХО

Select ... From Table [Where ...] [Order By ...] For Update With Lock
http://www.ibase.ru/devinfo/pslock.htm
+
WAIT / NO WAIT
http://www.ibase.ru/devinfo/ibtrans.htm

может помочь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо