Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SQL и совместное редактирование данных
Форум на CrossPlatform.RU > Разработка > SQL. Базы данных.
Majestio
Возможно вопрос не совсем по Qt, а скорее по использованию БД, тем не менее... Вопрос есть, попробую задать сюда :unsure:
Вопрос о многопользовательском доступе к данным в БД.

Ситуация

Пользователь1 открыл на редактирование "Карточку клиента #n" и находится в процессе редактирования. В этом процессе участвует еще куча таблиц из БД, отвечающих за привязку карточки к различным Рубрикаторам/Признакам/Таблицам как угодно. В них тоже вносятся изменения.

Пользователь2 открыл ту же "Карточку клиента #n" ... прочитал ее содержимое и ... удалил ее и все привязки, посчитав все это ненужным (имеет право). Ну или отредактировал.

Вопрос

Как правильно обработать ситуацию для Пользователя1? Какие есть готовые подходы/решения/сценарии/реализации?
lanz
Можно сделать например таблицу блокировок, и когда пользователь открывает какую либо карточку, добавлять туда что карточка открыта для чтения/редактирования в такое то время. Тогда другим пользователям запрещать удаление если карточка открыта для редактирования.

А можно удалять карточку, а первому пользователю предлагать на выбор - пересоздать карточку или отказаться от операции ( и например показывать кто удалил :lol: )

Вообще все зависит от контекста программы - какие действия будут выглядеть наиболее правильными и логичными.
Litkevich Yuriy
Тут многое зависит от применяемой СУБД. В Firebird для этого есть соответствующие "уровни изоляции" у транзакции.
Majestio
Всем спасибо за обсуждение - пришел к выводу, что в контексте моей разработки логичнее блочить записи. Ибо редактирование может быть многоступеньчатым - его "откаты" из-за вмешательств со стороны буду непонятны и пользователю, и программно, вернее логически не получается их обработать понятно. Поэтому просто недопускаем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.