Конференция "Базы" » Ожидание завершения транзакции [D6, Firebird]
 
  • konrads (25.08.11 07:56) [0]
    Ситуация такая:

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

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

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

    В качестве доступа к FB использую IBX
  • Sergey13 © (25.08.11 09:23) [1]
    ИМХО

    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

    может помочь.
  • O.O (25.08.11 10:52) [2]
    Спасибо, почитаю, попробую разобраться. В моём случае, чтоб не перереабатывать сильно код, идеальным вариантом была бы возможность открывать транзакцию с параметрами "write consistency" только в случае если в базне не открыта другая такая же транзакция от другого пользователя, а если открыта - повторить попытку, типа постановки в очередь.
 
Конференция "Базы" » Ожидание завершения транзакции [D6, Firebird]
Есть новые Нет новых   [134431   +10][b:0][p:0]