|
19.03.2009, 11:44 | #1 |
Участник
|
Цитата:
Может я мало ждал? Щас попробую подольше подождать.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
19.03.2009, 12:23 | #2 |
Member
|
Цитата:
Сообщение от miklenew
Так вот она ждёт и сообщение о блокировке не появляется.
Может я мало ждал? Щас попробую подольше подождать.
__________________
С уважением, glibs® |
|
19.03.2009, 12:39 | #3 |
Участник
|
Цитата:
Пришёл снял с остановки. И нормально система проапдейтила и удалила запись. Т.е. от времени это не зависит. Тогда вернёмся к первому сообщению "Может у кого есть какие идеи, как принудительно создать блокировку".
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
19.03.2009, 13:09 | #4 |
Участник
|
Цитата:
Создаем в таблице две записи. 2 джоба. 1-й джоб: 1. ttsBegin; 2. Блокировка 1-й записи forupdate 3. breakpoint 4. Блокировка 2-й записи forupdate 2-й джоб: 1. ttsBegin; 2. Блокировка 2-й записи forupdate 3. breakpoint 4. Блокировка 1-й записи forupdate Запускаем с одной сессии первый джоб, со второй сессии - второй. Она оба остановятся на п.3 после этого давим F5 в обоих отладчиках и получаем deadlock Правда исключение в аксапте может возникнуть не сразу - зависит от настроек БД |
|
|
За это сообщение автора поблагодарили: miklenew (5). |
19.03.2009, 13:39 | #5 |
Участник
|
Спасибо.
То что нужно. Вот джобы. Может кому пригодяться. X++: static void Job1(Args _args) { Table2 table; ; ttsbegin; select forupdate table where table.Field1 == '1'; breakPoint; table.update(); select forupdate table where table.Field1 == '2'; ttscommit; } X++: static void Job2(Args _args) { Table2 table; ; ttsbegin; select forupdate table where table.Field1 == '2'; breakPoint; table.update(); select forupdate table where table.Field1 == '1'; ttscommit; }
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. Последний раз редактировалось miklenew; 19.03.2009 в 13:48. |
|
Теги |
блокировка |
|
|