![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Record was changed by another user
alextov © (2001-12-17 19:38:00)Сабжевая надпись периодически появляеться при редактированиии
таблицы(TTable, Oracle) и отказывается редактироваться;
чтобы это значило
alextov (2001-12-21 10:54:00) [1]Спасибо за обстоятельный ответ.
Буду пробовать
XPDeveloper (2001-12-20 00:01:00) [2]Может прога не использует транзакции? Или она незавершенная и без отката?
Очень похоже. Лучше изменения класть в транзакцию и ее завершать или откатывать. Причем в коде предусмотреть чтобы подоготвка данных велась до начала транзакции, и вообще кроме изменения данных в транзакции не было. Это сокращает время ее протекания и позволяет избегать блокировки записей. Кроме этого сажаешь на try-except- Rollback (откат) и про блокировки можно забывать. Это безопасный способ. Второй - это пользовать запросы для обновления записей,в этом случае запрос сам пользует наилучшую схему вноса данных, но в большинстве случаев - эта операция протекает дольше чем самоличное изменение данных в записи, но с точки зрения безопасности - лучше.
Схема такова для самоличного изменения:
BeginTrans; // начинаем транзакцию
try
//вносим данные в табличку
CommitTrans; // заканчиваем транзакцию
except
// куда нибудь выводим диагностику ошибки
RollBack; //откат-отмена транзакции
end;
alextov (2001-12-19 23:45:00) [3]Спасибо за ответы, но из них возникает еще пара вопросов.
1) И все-таки что делать, кроме как поексперементировать со
св-вом UpdateMode .
2) А в текстовом виде ora-01555 как звучит?
petr_v_a (2001-12-17 21:54:00) [4]А TransIsolation лучше поставьте в ReadCommited и не трогайте :)
DirtyRead Oracle реально не поддерживает, а с RepeatableRead Вы обязательно нарветесь на ora-01555, и, скорее всего,бороться с ней будете очень долго, или Вас админ в темном переулке за ноги подвесит :)
petr_v_a (2001-12-17 21:39:00) [5]Еще на эту пакость св-во UpdateMode влияет. А вообще-то не есть хорошо использовать TTable при работе с SQL-серверами
alextov (2001-12-17 21:20:00) [6]Так как этого избежать
то-есть что сделать дабы данная проблема не вознокала вновь
Значение свойства TransIsolation компонента DataBase как -то влияет на это дело?
panov (2001-12-17 21:04:00) [7]Так то и значит, что написано: запись была изменена другим пользователем, т.е. пока один юзер ее редактировал(естественно, локальную копию записи ), другой пользователь успел ее изменить. Также запись может быть захвачена другим пользователем (состояние "locked").