Вниз
Скачать: CL | DM;

Record was changed by another user   Найти похожие ветки 

← →
alextov   (2001-12-17 19:38) [0]

Сабжевая надпись периодически появляеться при редактированиии
таблицы(TTable, Oracle) и отказывается редактироваться;
чтобы это значило


← →
panov ©   (2001-12-17 21:04) [1]

Так то и значит, что написано: запись была изменена другим пользователем, т.е. пока один юзер ее редактировал(естественно, локальную копию записи ), другой пользователь успел ее изменить. Также запись может быть захвачена другим пользователем (состояние "locked").


← →
alextov   (2001-12-17 21:20) [2]

Так как этого избежать
то-есть что сделать дабы данная проблема не вознокала вновь
Значение свойства TransIsolation компонента DataBase как -то влияет на это дело?


← →
petr_v_a ©   (2001-12-17 21:39) [3]

Еще на эту пакость св-во UpdateMode влияет. А вообще-то не есть хорошо использовать TTable при работе с SQL-серверами


← →
petr_v_a ©   (2001-12-17 21:54) [4]

А TransIsolation лучше поставьте в ReadCommited и не трогайте :)
DirtyRead Oracle реально не поддерживает, а с RepeatableRead Вы обязательно нарветесь на ora-01555, и, скорее всего,бороться с ней будете очень долго, или Вас админ в темном переулке за ноги подвесит :)


← →
alextov   (2001-12-19 23:45) [5]

Спасибо за ответы, но из них возникает еще пара вопросов.
1) И все-таки что делать, кроме как поексперементировать со
св-вом UpdateMode .
2) А в текстовом виде ora-01555 как звучит?


← →
XPDeveloper   (2001-12-20 00:01) [6]

Может прога не использует транзакции? Или она незавершенная и без отката?
Очень похоже. Лучше изменения класть в транзакцию и ее завершать или откатывать. Причем в коде предусмотреть чтобы подоготвка данных велась до начала транзакции, и вообще кроме изменения данных в транзакции не было. Это сокращает время ее протекания и позволяет избегать блокировки записей. Кроме этого сажаешь на try-except- Rollback (откат) и про блокировки можно забывать. Это безопасный способ. Второй - это пользовать запросы для обновления записей,в этом случае запрос сам пользует наилучшую схему вноса данных, но в большинстве случаев - эта операция протекает дольше чем самоличное изменение данных в записи, но с точки зрения безопасности - лучше.
Схема такова для самоличного изменения:
BeginTrans; // начинаем транзакцию
try
//вносим данные в табличку
CommitTrans; // заканчиваем транзакцию
except
// куда нибудь выводим диагностику ошибки
RollBack; //откат-отмена транзакции
end;


← →
alextov   (2001-12-21 10:54) [7]

Спасибо за обстоятельный ответ.
Буду пробовать



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.006 c
4-75722
ARA
2001-11-21 23:50
2002.01.24
Помогите с экспортом ф-й из DLL


1-75614
Vitalik
2002-01-06 21:08
2002.01.24
создание динамических массиво в Pascale


1-75555
Deadlock
2002-01-06 03:32
2002.01.24
Ну ОЧЕНЬ нужно


1-75596
Delphimun
2002-01-07 22:01
2002.01.24
Структура консольного приложения


1-75612
Dmitriy_R
2002-01-06 10:55
2002.01.24
Прозьба помогите разобратся где я сделал ошибку с ListView




   Наверх