![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
блокировка записи [D6, IB6.x]
beginer © (2004-10-25 12:07:00)Подскажите,пожалуйста,как можно заблокировать уже редактируемую запись с помощью транзакций.Если не трудно приведите какой-нибудь примерчик,а то ума не приложу что и где писать надо
kdv (2004-10-26 18:12:00) [1]to Vemer:
если б ты почитал про реализацию with lock в IB, то понял бы, что update от select with lock не отличаются. т.е. они отличаются конечно, но в обоих случаях генерится версия. Кроме того, если в после update клиентский софт отвалится, то точно так же версии "застрянут". Застревают они не навсегда, а до тех пор, пока сервер не обнаружит что клиент отвалился. в зависимости от настроек сервера и tcp это может быть от "моментально" до "3 минуты" по умолчанию.
Так что в данном случае with lock наоборот, лучше чем ручной update.
насчет "сурьезных людей", которые "за блокировку ..." - любая модификация данных это блокировка, до окончания транзакции.
И в IB/FB даже есть блокирование таблиц целиком при старте транзакции и по ходу. И в версионнике всегда (!) блокировки намного легче и менее страшные. чем в блокировочном сервере.
К тому же, большинство коммерческих серверов именно стремится к версионности. Хотя бы будущая версионность в Yukon, как будто прямо срисованная с IB/FB (а не с Оракла, к примеру).
Vemer (2004-10-26 12:28:00) [2]Вдогонку самому себе - на SQL.Ru сурьезные люди, сурьезно занимающиеся БД за блокировку транзакцией вообще руки сразу предлагают отрывать прогерам )). Так что можно сразу готовиться быстро убегать от благодарных юзеров.
vv_fran (2004-10-26 10:24:00) [3]В догонку Vemer - у меня в приложении есть пункт меню "Сбросить блокировку". И он нужна только если комп. сломался физически. При повторном запуске приложения таблица блокировки обновляется.
Vemer (2004-10-25 19:19:00) [4]В моем случае посмотреть, какие записи (и кем) заблокированы и освободить их намного проще. Аварийную кнопку хоть каждому пользователю и лог ее нажатий.
Роман Снегирев (2004-10-25 17:56:00) [5]to Vemer and vv_fran
ну вот рухнет приложение у одного из клиентов, и что дальше? а дальше то, что записи навечно (до вмешательства админа) остануться "заблокированными"
vv_fran (2004-10-25 16:26:00) [6]У меня тоже, типа как у Vemer, но через таблицу блокировок - в ней № записи и кто открыл. Чужие записи открываются только на чтение.
Vemer (2004-10-25 14:24:00) [7]ИМХО это кривой способ блокировки, т.к. при зависании клиента записи могут стать надолго недоступными. Поля статуса + разруливание на клиенте/в ХП - намного проще.
Роман Снегирев (2004-10-25 13:41:00) [8]select ... for update with lock
но тогда нужен FB 1.5 и компоненты подходящие (FibPlus например)
Johnmen (2004-10-25 13:12:00) [9]Ты все же почитай по ссылке HSolo © (25.10.04 12:17) [3]
особенно п.4
beginer (2004-10-25 12:58:00) [10]А кто-нибудь из присутствующих делал подобные блокировки в своих программах?
}|{yk (2004-10-25 12:56:00) [11]написать в запросе
for update
beginer (2004-10-25 12:25:00) [12]Прочитал,но так и не понял,что делать нужно.А на пальцах это объяснить никак нельзя?
HSolo (2004-10-25 12:17:00) [13]http://ibase.ru/devinfo/pslock.htm
Johnmen (2004-10-25 12:15:00) [14]Можно сделать псевдоблокировку.
Как - написано здесь ibase.ru, ищи...
Карелин Артем (2004-10-25 12:12:00) [15]IB не блокировщик.