Привет всем!
Пишу небольшой скрипт, который является интерфейсом к БД (ifx). С добавлением записей всё просто.
Не пойму, как можно сделать апдейт и удаление.
Опишу то, что хотелось бы иметь.
Пользователь задаёт некий критерий поиска, выдаю ему соответствующие записи (скажем некое множество А). С этого момента их нужно как-то заблокировать (каждая запись имеет ID), с тем чтобы другие пользователи, пока данный работает, не могли удалить или изменить выбранные данные множества А.
Варианты решений:
1) В начале удаления или апдейта создаётся какой-нибудь файл lock.tmp, который удаляется по завершении транзакции.
Остальные пользователи ждут, пока не удалится файл lock.tmp и лишь тогда могут приступить к удалению или апдейту.
Минус - пользователь обязательно не нажмёт "Закончить апдэйт", а просто закроет броузер, lock.tmp останется неудалённым, больше никто не сможет работать.
Решение - как-нибудь привесить с событию "Завершение сессии" функцию удаления lock.tmp (прошу прощения за объектно-ориентированную терминологию).
Вопрос - как это можно сделать, если можно? (поймать событие завершения сессии)
2) Воспользоваться средствами самой БД и как-нибудь заблокировать выбранные данные. Опять же до завершения сессии или на определённые период.
Вопрос - как это можно сделать, если можно?
3) Положиться на удачу и предположить, что пересечений пользователей по время удалений и апдэйтов не будет.
А вообще как это реализуется? Кто-нибудь решал подобные задачи?