|
|
|
конфликт обновления
|
|||
|---|---|---|---|
|
#18+
sql server + vfp. работаю через remote view. появился вопрос: если один клиент удалил нечто, а другой в это время это меняет, при попытке сохранить изменения будет ошибка. или одну и ту же запись удаляют два пользователя и т.п. Какие есть пути решения? У меня есть несколько вариантов, но хочится узнать как делают опытные люди ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 15:45 |
|
||
|
конфликт обновления
|
|||
|---|---|---|---|
|
#18+
Например, пользователи модифицируют таблицу table = ( id , fld1, fld2) Код: plaintext 1. 2. 3. Теперь возможные стратегии: 1) "кто последний того и тапочки" или без конфликтов: Код: plaintext 1. 2. 3. 2) конфликт при изменении хотя бы одного модифицируемого поля: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 3) конфликт при изменении любого поля (даже readonly поля) с момента начала редактирования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. На уровне REMOTE VIEW фокс поддерживает эти стратегии выявления конфликтов + анализ timestamp. Выбирай, что тебе подходит под логику твоего приложения и удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 18:14 |
|
||
|
конфликт обновления
|
|||
|---|---|---|---|
|
#18+
Да, к чему это я все? :D Чтобы выявить конфликт необходимо вводить фиктивное поле - признак удаления. Это поле есть и в фоксе - 0 поле, доступ к которому идет через функцию deleted() и модифицируется через команду delete. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 18:35 |
|
||
|
конфликт обновления
|
|||
|---|---|---|---|
|
#18+
Ну, вобщем, все правильно. Только в RemoteView все то, что написал Анатолий происходит неявно. Скрыто от пользователя. По команде TableUpdate(), а при строковой буферизации View просто при попытке перехода на другую запись, предпринимается попытка сброса буфера. Если сброс буфера не удался, то TableUpdate() вернет .F. Далее по AERROR() уточняем причину отказа. Сейчас не могу сказать точно, но посмотри какой именно код и сообщение об ошибке вернет сервер, если изменяемая запись была удалена другим пользователем. Ну, и соответствующее сообщение пользователю: мол пока Вы тут чаи распевали Вашу запись уже удалили. В общем, "стандартная" стратегия - это разрешение конфликтных ситуаций при попытке сброса изменений на сервер. Все равно ведь одновременной модификации не может быть в принципе. Ни один сервер этого не допустит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 23:11 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1594220]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 343ms |

| 0 / 0 |
