Проблема: есть строка в таблице БД, которая может одновременно редактироваться несколькими (например двумя) пользователями с разных соединений, при этом если не предпрнимать никаких мер, то пользователь сохранивший изменения последним, затрёт изменения сделанные предыдущим пользователем.
Запись редактируется человеком вручную, и следовательно между чтением из базы и записью обратно может проходить довольно много времени.
Как можно решить эту проблему?
База данных MySQL 4.1, т.к. в конторе для которой я это делаю она и стоит, а админ ничего другого ставить не хочет. Но в принципе варианты с другими СУБД тоже возможны, если будут веские причины, то модно будет пробить и установку другой базы.
Самому мне в голову приходят следующие варианты: 1. При сохранении записи в базу проверяется, чтобы запись в базы была бы в таком же состоянии как и при считывании. Если запись в другом состоянии, предложить замёрджить изменения в ручную. минусы такого подхода: надо делать новую форму для мёрджа
2. Запустить на сервере отдельный процесс, который все клиенты будут информировать, какие документы открыты на редактирование, и разрещать редактировать один документ только одному человеку клиенту одновременно. минусы такого подхода: разграничение доступа на добровольных началах, т.е. левая программа всё равно сможет поменять базу в обход этого процесса