Re: Блокировка записи в таблице
От: Zakk  
Дата: 28.04.06 08:11
Оценка:
Здравствуйте, 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 в главную таблицу нашей сущности не годится, потому что при внезапном отключении клиента лок остаётся.

Кто ещё что подскажет ? Заранее благодарен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.