Форум: "Базы";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c