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