![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Deadlock Update [D7, IB6.x]
ss300 © (2004-05-26 09:19:00)доброе утро мастера!!
на сервере есть ХП
вот основной код:
UPDATE Global SET LASTREGNUM = :Ret;
UPDATE Global SET Data = :NowDate;
Когда я с одного клиентского приложения вызываю процедуру
spUP.ExecProc; работает ноормально.
а когда паралельно 2 клиента вызывает процедуру то на одном клиенте ошибка:
Deadlock update with concurrent update
Как устранить эту ошибку ? ..
спасибо
Sergey13 (2004-05-26 10:42:00) [1]комит/ролбек снимают блокировку. Но у тебя, ИМХО, несколько другая ситуевина. Желательно блокировать таблицу перед апдейтом. Типа для ФБ1.5 select * from table for update With Lock. Для ИБ6.0 смотри ссылку в [1].
И еще раз повторю - странная задача у тебя. ИМХО, надо структуру править.
ss300 (2004-05-26 10:12:00) [2]таблица блокируется когда первый юзер апдейтит!! и второй юзер не может апйдетит.. как разблокировать таблицу после того как первый юзер заапдетит ??
Sergey13 (2004-05-26 09:48:00) [3]2ss300 (26.05.04 09:39) [3]
Ну тогда таблицу надо перед апдейтом блокировать, ИМХО. Странная задача какая то - несколько человек одновременно апдейтят всю таблицу. Может в консерватории что подправить надо?
ss300 (2004-05-26 09:47:00) [4]может IBTransaction := true сделать ??
ss300 (2004-05-26 09:39:00) [5]Да, вся таблица апдейтится
там всего лишь одна таблица
Sergey13 (2004-05-26 09:27:00) [6]Может так.
UPDATE Global SET LASTREGNUM = :Ret, Data = :NowDate;
И потом. У тебя вся таблица должна апдейтится в процедуре?
Johnmen (2004-05-26 09:26:00) [7]Разобраться с конкурирующими транзакциями. см.ibase.ru