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

Вниз

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

 
Slider007 ©   (2004-10-13 09:26) [0]

Здравствуйте друзья !
Помогите пожалуйста разобраться со следующим вопросом :
Пишу программу, база в MSAccess. Клиенты цепляются к базе по сети.
Возникла необходимость блокирования записей, чтоб 2 человека не могли одну и ту же запись одновременно редактировать.
В интернете нарыл интересный способ - создать в таблице поле специальное (например BLOCK), в котором хранятся нолики. Когда человек начинает работать с записью (начинает её редактировать) в поле BLOCK записывается ЕДИНИЦА, после окончания редактирования в это поле пишется опять НОЛЬ. Соответственно человек не может начать редактировать запись если в поле BLOCK записана ЕДИНИЦА.
Но здесь возникает вопрос - если во время редактирования записи (когда в поле BLOCK находится ЕДИНИЦА) например нажать RESET (или просто компьютер повиснет) - нолик в поле BLOCK уже не запишется, и запись окажется заблокированной "НАВСЕГДА". Т.е. запись эту придется разблокировать в ручную.

Может кто-нибудь уже сталкивался с такой ситуацией ? Как можно решить эту проблему ?


 
sniknik ©   (2004-10-13 11:17) [1]

не блокировать, работать с данными в локальном рекордсете, скидывать после окончания обработки максимально быстро. (т.к. у аксеса практически в любом случае блокируется таблица, даже если проставить плокировку позаписьно, т.к. есть оговорка "на усмотрение движка" ;о), как ему покажется лучше)


 
Slider007 ©   (2004-10-13 11:33) [2]

а если всётаки блокировать ? нет способа бороться с неразблокировкой строк при аварийном завершении программы ?


 
sniknik ©   (2004-10-13 11:39) [3]

ставь не еденичку а время (тип пля дататайм) ожидаемой блокировки (+ 1мин к примеру), и проверяй не на нолик на на меньше этому времени, по прошествии получается автоматическая разблокировка а по записи устанавливай прошедшее время.


 
Nikolay M. ©   (2004-10-13 11:56) [4]


> т.к. у аксеса практически в любом случае блокируется таблица

Можно узнать, где про это написано? Или это личные наблюдения?
Я лично пока пребывал в убеждении, что в 97-м аксесе блокируется страница, а в 2000-м - запись.


 
sniknik ©   (2004-10-13 12:07) [5]

> Можно узнать, где про это написано? Или это личные наблюдения?
в разных источниках, и личные наблюдения тоже.
на sql.ru одно время бурно обсуждалось (попытаюсь счас поискать), и статьи там тоже вроде есть.
тесты там приводимые я повторял, все сходится. ;(


 
sniknik ©   (2004-10-13 12:25) [6]

именно той, не нашол ;(
поищи сам по слову "блокировка", там много интересного. но обший смысл по теме такой, что бы ты не сам ставил, если движку показалось выгоднее заблокировать таблицу, он так и сделает независимо от установок. и закладыватся на то что будут бллокированы только записи нельзя.


 
Slider007 ©   (2004-10-13 12:26) [7]


> ставь не еденичку а время

! Классная идея, спасибо, сейчас буду пробовать ..


 
Nikolay M. ©   (2004-10-13 12:54) [8]


> sniknik ©   (13.10.04 12:07) [5]

Черт возьми :(
Темы такой на склру не видел, щас посмотрю. А я-то надеялся, что в 2000-м что-то кардинально поменялось, досадно :(



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

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

Наверх




Память: 0.46 MB
Время: 0.037 c
14-1098544150
Кириешки
2004-10-23 19:09
2004.11.14
Очередное надувательство???


6-1093250377
Lex_!
2004-08-23 12:39
2004.11.14
Веб чат на дельфи, работа с Response


6-1094129018
GuAV
2004-09-02 16:43
2004.11.14
TEmbeddedWb


14-1098972626
_none_
2004-10-28 18:10
2004.11.14
кидалово!


1-1098988791
Victor
2004-10-28 22:39
2004.11.14
Подскажите: Как в ячейке StringList а не обрезался текст





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский