|
|
#6 |
|
Участник
|
Цитата:
Сообщение от Perc
Про "начало" и "конец" транзакции в стандарте - так там и есть на самом деле все в обычном понимании стандартно. В классе ReqCalc:
ttsbegin; this.insertData(); ... ttscommit; В функции insertData() и очистка ReqTrans и RecTransCov присутсвует в прямом виде. А отдельная сессия есть в этом классе, но она имхо ничего кроме блокировки записи в таблице планов не делает вообще: connectionLock = new UserConnection(); connectionLock.ttsbegin(); reqPlanLock.setConnection(connectionLock); select forupdate reqPlanLock where reqPlanLock.reqPlanId == reqPlanId; Видимо это просто способ запрета паралельного запуска того же расчета с другого места всего лишь. connectionLock = new UserConnection(); connectionLock.ttsbegin(); reqPlanLock.setConnection(connectionLock); select forupdate reqPlanLock where reqPlanLock.reqPlanId == reqPlanId; ... блокируют всего 1 таблицу reqPlan, и действительно для того чтобы остальные "желающие" подождали. Так как же у вас сделано? Полностью стандарт или что то дописали? |
|
|