![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокировка записей в FireBird 1.5 [D7]
3APA3A © (2004-08-15 23:00:00)Есть таблица (a char(10), UNIQ_ID int) (для примера).
Один из клиентов начинает редактировать запись с UBIQ_ID = N1.
Как запретить другим клиентам редактировать эту же запись?
Причем это надо сделать в начале редактирования - типа при нажатии на кнопку "редактировать" выскакивала табличка "бла-бла-бла... запись редактируют..."?
Digitman (2004-08-18 11:18:00) [1]
> если клиент который сделал этот select ... with lock "отвалится"
> - блокировка сервером автоматически снимется?
по идее должна сняться, ибо автооткат транзакции это должен предусматривать ... но я бы на это (в смысле - на автоанлок) не полагался в "боевом" проекте - фича достаточно молодая и, вероятно, имеет скрытые баги ... лучше таки проконсультироваться на эту тему у Димы Еманова на ньюс-конфе epsylon.public.interbase
3APA3A (2004-08-18 06:57:00) [2]to Petr V. Abramov
tnx... Теперь мысли у меня пошли в верном направлении...
На "скорую руку" попробовал - именно то, что надо, но проверить до конца не успел - если клиент который сделал этот select ... with lock "отвалится" - блокировка сервером автоматически снимется?
to jack128
Теперь я понял про что Вы говорили (к чему тут "холостой" update)... tnx...
Petr V. Abramov (2004-08-18 00:19:00) [3]если строго FireBird 1.5
то select ... where PK_FILED = :pk_value... with lock
jack128 (2004-08-17 22:36:00) [4]
> Клиент А открыл форму редактирования, я просто считал из
> базы поля и все.
так я и говорю, нужно не "просто считать из базы поля", а еще и апдейтить их..
Или ты хочешь сказать, что этот клиент пользуется не твоей программой?
3APA3A (2004-08-17 22:14:00) [5]to P.N.P.
1) Но что делать если клиент "неожиданно" отключился от базы? Ведь это поле так и останется "редактируемым".
2) Где, в каком компоненте это устанавливается? Если не в компоненте, то как?
to jack128
Послать то можно, но
Клиент А открыл форму редактирования, я просто считал из базы поля и все. Как этот "холостой" update мне поможет?
to Alexandr
Читал... Вопрос тот же - где установить все эти уровни изоляции и т.д.?
Alexandr (2004-08-16 07:56:00) [6]читать
www.fibplus.com.ua
www.ibase.ru
и другое про пассивную блокировку, транзакции, deadlock
jack128 (2004-08-16 00:02:00) [7]послать на сервер "холостой update" update MyTable set MyField = MyField
если кто тот уже редактирует эту запись, то ты получешь исключение и можешь обработать его как хочешь..
P.N.P. (2004-08-15 23:26:00) [8]как вариант - добавить еще одно поле, где
и хранить состояние текущей записи.
или уровень изоляции транзакции установить в
concurrency
nowait