Форум — Ответы     (  К темам )
 ?  Владимир: как заблокировать доступ к таблице на сервере,известив об этом других? (07-04-2003 12:26:54)
Как заблокировать доступ к таблице базы данных, известив об этом других пользователей, если они вдруг в этот момент обращаются к ней же и заставить их подождать некоторое время.
 Владимир (07-04-2003 19:07:36)
Базы данных бывают разные: InterBase, Paradox, Oracle ...
И способы доступа к таблицам и извещение пользователей о чем либо тоже,
также зависит и от способаx доступа (компонентах) к базе данных.
Для Paradox и dBase это может быть Table1->LockTable(TLockType);
где TLockType: ltReadLock — блокировка на чтение, ltWriteLock — на запись,
если нужны обе блокировки, необходимо дважды вызвать LockTable с разными
значениями TLockType.
Разблокировать таблицу Table1->UnlockTable(TLockType LockType);
Кроме того, можно открыть таблицу, указав предварительно свойство
Table1->Exclusive = true;
Table1->Open();
и другие приложения не будут иметь доступа к таблице
Если в этот момент другие пользователи попытаются получить доступ к таблице,
будет сгенерировано исключение, которое можно перехватить в блоке
try{}...catch(){} и соответственно обработать, например предложить
подождать или повторить попытку.
Но нормальная клиент-серверная база данных (InterBase, MS SQL, Oracle...)
должна обеспечивать нормальную одновременную работу нескольких (десятков,
сотен) пользователей, без лишних блокировок, и мне не совсем понятно желание
писать программу, которая будет обеспечивать одновременную работу нескольких
пользователей с базой данных, но при этом блокировать ТАБЛИЦУ ! от других
пользователей, заставляя их ждать.

 Matt (19-04-2003 20:46:00)
>>не совсем понятно желание
писать программу, которая будет обеспечивать одновременную работу нескольких
пользователей с базой данных, но при этом блокировать ТАБЛИЦУ !

А если ее надо удалить?