Форум — Ответы ( К темам )
? | Владимир: как заблокировать доступ к таблице на сервере,известив об этом других? (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) | |
>>не совсем понятно желание писать программу, которая будет обеспечивать одновременную работу нескольких пользователей с базой данных, но при этом блокировать ТАБЛИЦУ ! А если ее надо удалить? |