Здравствуйте, Alex, Вы писали:
A>Привет всем! A>!!! СРОЧНО !!!
A>Я использую ADO. Коннекчусь через ODBC к Access’овской базе данных. Делаю многопользовательскую программу. A>Подскажите, плиииз: как мне заблокировать запись в таблице? Желательно блокировка на чтение. И как мне определить потом что она заблокирована? A>Смотрел в MSDN. Что я там нашел.
A>Объект Record -> свойство Mode. Типа можно указать permissions для записи. A>Также написано, что объект Record может представлять строку из Recordset. А вот как его получить мне не понятно. Допустим рекордсет открыт. А дальше что делать? Как запись-то заблокировать? Как получить Record объект, который соотвтетствует определенной записи?
A>Помогите.
A>Буду благодарен любым крупицам информации!!! A>С надеждой, Алексей.
Здравствуйте.
У меня подобная проблема.
Я использую MS SQL Server 2000. Есть многопользовательская база. Пользователь открывает для редактирования некую сущность, которая представлена набором записей в разных таблицах, операция редактирования сложная и длительная. При этом необходимо предотвратить возможность доступа к этой сущности другими клиентами.
Есть два варианта решения и оба не годятся.
А.Заворачивать операцию редактирования в транзакцию не подходит, потому как :
1.Операция длительная, ожидает ввода пользователя. У другого клиента запрос затянется надолго, пока база ему ответит, что запись залочена.
2.В процессе редактирования клиент должен иметь возможность делать модификации некоторых других таблиц базы, и эти изменения не должны откатываться с откатом изменений нашей редактируемой сущности. Более того, нужно реализовать возможность редактировать две или более сущностей одновременно и независимо.
Б.Ввести столбец c флагом LOCK в главную таблицу нашей сущности не годится, потому что при внезапном отключении клиента лок остаётся.