Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

Rabota s BD   Найти похожие ветки 

 
Slv   (2003-05-23 10:59) [0]

Obrabotka tranzaktii v Mnogopolizovateliskom regime
Delphi 6 + Interbase 7. Rabotaet cerez componenti

Error:
Deadllock. Update conflicts with concurrent update.

Vopros: Kak oboiti ?


 
Zacho ©   (2003-05-23 11:02) [1]

Через какие компоненты ?
Читать http://www.ibase.ru/devinfo/ibtrans.htm , http://www.ibase.ru/devinfo/ibxtrans.htm и другие статьи на http://www.ibase.ru/develop.htm раздел "Транзакции, архитектура IB"


 
Slv   (2003-05-23 11:08) [2]

Через компоненты прямого доступа.
Проблема в том что когда несколько пользователей одновременно выполняют "Transaction.CommitRetaining" выдает вышеуказанную ошибкую


 
Zacho ©   (2003-05-23 11:11) [3]


> Slv (23.05.03 11:08)
> Через компоненты прямого доступа.

Через какие именно ? IBX, FIBPlus, IBO, ADO+IBProvider ...
И почитай все-таки статьи, и разберись как работать с транзакциями в IB


 
Slv   (2003-05-23 11:21) [4]

IBX.

Само собой почитаем. Но к сожалению уровень срочности равен значению "ВЧЕРА". Время решения вопроса минимально.


 
Zacho ©   (2003-05-23 11:31) [5]

Ладно, если кратко: это происходит, когда какя-либо транзакция пытается изменить запись, измененную в другой не завершившейся транзакции. Делай выводы.
Обходить не надо. Надо правильно обработать.


 
Johnmen ©   (2003-05-23 11:31) [6]

Как обойти ?
try
Transaction.CommitRetaining;
except
Transaction.RollbackRetaining;
end;


А по хорошему, читать, читать и читать документацию...:)


 
Slv   (2003-05-23 11:39) [7]



try
Transaction.CommitRetaining;
except
Transaction.RollbackRetaining;
end;

Этот вариант не приемлем т.к. в этом случае теряются данные.
Было бы хорошо чтобы по "except" эти данные установить в очередь на update данных.


 
Zacho ©   (2003-05-23 11:44) [8]


> Slv (23.05.03 11:39)

Просто укажи в параметрах транзакций WAIT.
Кстати, в этом случае тоже "потеряются" данные, внесенные транзакцией, завершившейся раньше.
И еще: пишущие транзакции должны быть как можно более короткими.


 
Johnmen ©   (2003-05-23 11:52) [9]

>Slv

Скондачка ты свою проблему не решишь ! Потому, что тебе не хватает знаний. Куда за ними идти, уже сказали. Не поняв механизмов и принципов работы SQL сервера и клиентского приложения, ты не сможешь грамотно реализовать желаемое...:)


 
Slv   (2003-05-23 11:56) [10]

Если можно еще немного о сути этой ситуации.
Есть форма на которой есть DB-компоненты и несколько компонент, посредством которых осуществляется ввод данных вручную.

Когда несколько пользователей одновременно активизируют "Save", обрабатываются данные, затем выполняется "Transaction.CommitRetaining". В этом месте и появляется ошибка, хотя пользователи "сидят" на разных записях


 
Zacho ©   (2003-05-23 12:01) [11]


> Slv (23.05.03 11:56)

Значит, не на разных.


 
Slv   (2003-05-23 12:12) [12]

Дело втом что пользователям расспределяются разные записи или группа записей из одной и той же таблицы.


 
Zacho ©   (2003-05-23 12:34) [13]


> Slv (23.05.03 12:12)
> Дело втом что пользователям расспределяются разные записи
> или группа записей из одной и той же таблицы.

И что ? Или уровень изоляции транзакций SNAPSHOT TABLE STABILITY ?


 
Slv   (2003-05-23 13:25) [14]

В IBTransaction. params =concurrency.


 
Zacho ©   (2003-05-23 13:40) [15]


> Slv (23.05.03 13:25)

При уровне изоляции SNAPSHOT (concurrency) Lock conflict может возникнуть только при изменении одной и той же записи разными транзакциями.



Страницы: 1 вся ветка

Текущий архив: 2003.06.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
3-34736
BBCHa
2003-05-23 17:17
2003.06.12
Какая-то злая ошибка


1-34777
vvvvv
2003-06-02 11:33
2003.06.12
Как запретить onMouseWheel?


3-34757
Инна
2003-05-23 15:16
2003.06.12
output значения хп


3-34758
YuraKiller
2003-05-19 22:49
2003.06.12
Как наладить работу с пользователями в IB


4-35128
Great_Lesh
2003-04-13 07:20
2003.06.12
Запуск файла/процесса от имени другого пользователя