Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

Блокировка записей в FireBird 1.5   Найти похожие ветки 

 
3APA3A ©   (2004-08-15 23:00) [0]

Есть таблица (a char(10), UNIQ_ID int) (для примера).
 Один из клиентов начинает редактировать запись с UBIQ_ID = N1.
 Как запретить другим клиентам редактировать эту же запись?
 Причем это надо сделать в начале редактирования - типа при нажатии на кнопку "редактировать" выскакивала табличка "бла-бла-бла... запись редактируют..."?


 
P.N.P. ©   (2004-08-15 23:26) [1]

как вариант - добавить еще одно поле, где
и хранить состояние текущей записи.

или уровень изоляции транзакции установить в

concurrency
nowait


 
jack128 ©   (2004-08-16 00:02) [2]

послать на сервер "холостой update" update MyTable set MyField = MyField

если кто тот уже редактирует эту запись, то ты получешь исключение и можешь обработать его как хочешь..


 
Alexandr ©   (2004-08-16 07:56) [3]

читать
www.fibplus.com.ua
www.ibase.ru
и другое про пассивную блокировку, транзакции, deadlock


 
3APA3A ©   (2004-08-17 22:14) [4]

to P.N.P.
  1) Но что делать если клиент "неожиданно" отключился от базы? Ведь это поле так и останется "редактируемым".
  2) Где, в каком компоненте это устанавливается? Если не в компоненте, то как?

 to jack128
  Послать то можно, но
   Клиент А открыл форму редактирования, я просто считал из базы поля и все. Как этот "холостой" update мне поможет?
 
  to Alexandr
  Читал... Вопрос тот же - где установить все эти уровни изоляции и т.д.?


 
jack128 ©   (2004-08-17 22:36) [5]


> Клиент А открыл форму редактирования, я просто считал из
> базы поля и все.
так я и говорю, нужно не "просто считать из базы поля", а еще и апдейтить их..

Или ты хочешь сказать, что этот клиент пользуется не твоей программой?


 
Petr V. Abramov ©   (2004-08-18 00:19) [6]

если строго FireBird 1.5
 то select ... where PK_FILED = :pk_value ... with lock


 
3APA3A ©   (2004-08-18 06:57) [7]

to Petr V. Abramov
  tnx... Теперь мысли у меня пошли в верном направлении...
  На "скорую руку" попробовал - именно то, что надо, но проверить до конца не успел - если клиент который сделал этот select ... with lock "отвалится" - блокировка сервером автоматически снимется?
 
 to jack128
  Теперь я понял про что Вы говорили (к чему тут "холостой" update)... tnx...


 
Digitman ©   (2004-08-18 11:18) [8]


> если клиент который сделал этот select ... with lock "отвалится"
> - блокировка сервером автоматически снимется?


по идее должна сняться, ибо автооткат транзакции это должен предусматривать ... но я бы на это (в смысле - на автоанлок) не полагался в "боевом" проекте - фича достаточно молодая и, вероятно, имеет скрытые баги ... лучше таки проконсультироваться на эту тему у Димы Еманова на ньюс-конфе epsylon.public.interbase



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.024 c
3-1092384504
Руслан
2004-08-13 12:08
2004.09.12
Снова вопрос по DBGridEH


14-1093087262
Bless
2004-08-21 15:21
2004.09.12
*.wav ->CD


14-1093095857
Nick Denry
2004-08-21 17:44
2004.09.12
Библиотека Qt


1-1093506999
SPy
2004-08-26 11:56
2004.09.12
TShellListView - стандартное popupmenu


3-1092731625
Lizka
2004-08-17 12:33
2004.09.12
как добавить строку из одного DBLookupListBox в другой?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский