Потерянные изменения

UTILIZATOR
Дата: 02.06.2006 09:17:19
1. Пользователь 1 выбирает (запрашивает) строку данных.
2. Пользователь 2 выбирает ту же строку.
3. Пользователь 1 изменяет строку, обновляет базу данных и фиксирует изменение.
4. Пользователь 2 изменяет строку, обновляет базу данных и фиксирует изменение.

Все сделанные на шаге 3 изменения не будут потеряны потому что в формсе выдается сообщение пользователю 2, что данные были изменены и надо их обновить.

Вопрос: при разработке клиентской части в Delphi или Builder C, как реализовать такой механизм, есть ли простые решения?
alex-ls
Дата: 02.06.2006 09:23:04
for update
Q u a d r o
Дата: 02.06.2006 09:23:21
Читайте про оптимистичное/пессимистичное блокирование - они предназначены для предотвращения "потерянных изменений" (инфы масса).
SeaGate
Дата: 02.06.2006 09:24:37
UTILIZATOR
1. Пользователь 1 выбирает (запрашивает) строку данных.
2. Пользователь 2 выбирает ту же строку.
3. Пользователь 1 изменяет строку, обновляет базу данных и фиксирует изменение.
4. Пользователь 2 изменяет строку, обновляет базу данных и фиксирует изменение.

Все сделанные на шаге 3 изменения не будут потеряны потому что в формсе выдается сообщение пользователю 2, что данные были изменены и надо их обновить.

Вопрос: при разработке клиентской части в Delphi или Builder C, как реализовать такой механизм, есть ли простые решения?

Не работал с Delphi и с Builder C, но что мешает делать
select ... from <имя_таблицы> for update [nowait|wait N]
? (У меня Oracle 9.2.0.1)
UTILIZATOR
Дата: 02.06.2006 09:36:17
Спасибо всем, убедлся что на верном пути
select ... from <имя_таблицы> for update [nowait|wait N]
alexx726
Дата: 02.06.2006 09:47:49
Если работать через DOA, ODAC то есть понятие RefresOptions где модно выставить что-то типа RefreshBeforeEdit
softwarer
Дата: 02.06.2006 10:44:49
alexx726

Это не сильно спасет от двух параллельных обновлений.
andrey_anonymous
Дата: 02.06.2006 10:47:40
softwarer
alexx726

Это не сильно спасет от двух параллельных обновлений.

Ну если "refresh before update" реализован посредством select for update (?), по почему бы и нет?
Stax.
Дата: 02.06.2006 12:02:15
andrey_anonymous
softwarer
alexx726

Это не сильно спасет от двух параллельных обновлений.

Ну если "refresh before update" реализован посредством select for update (?), по почему бы и нет?

3. Пользователь 1 изменяет строку, обновляет базу данных и фиксирует изменение

.....
stax
andrey_anonymous
Дата: 02.06.2006 12:25:44
Stax.
andrey_anonymous
softwarer
alexx726

Это не сильно спасет от двух параллельных обновлений.

Ну если "refresh before update" реализован посредством select for update (?), по почему бы и нет?

3. Пользователь 1 изменяет строку, обновляет базу данных и фиксирует изменение

И?