![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ожидание завершения транзакции [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
может помочь.