powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
13 сообщений из 13, страница 1 из 1
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32485363
nizkzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема в следующем - у меня клиент серверная приложение
на Делфях. Вобщем база написана на Interbase и находиться на сервере,
а клиенты обращаються к этой базе.
Так вот проблема в том что, при обращении к таблице одного пользователя
другие пользователи надо что б не могли получить доступ, к этой таблице.
Я слышал о блокировке таблиц - но что-то не совсем понял.
И вобще как обойти проблему одновременную работу с таблицой в такой
ситуации, что-бы не было потерь данных и.т.д
Заранее спасибо!!!!!!!!!!!!
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32485378
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странное желание (в смысле не логичное для клиет серверного приложеия)
ibase.ru тебе может быть поможет
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32485603
Matt Juntunen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блокировки записей в обычном понимании на сервере IB нет. Про варианты реализации с клиента есть статья на Ibase.Ru + про транзакции наверно надо почитать..
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32485831
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже слышал что-то о блокировке, и слышал также такой рецепт:

поскольку блокировки на чтение нет,
доступ должен быть открыт только через хранимые процедуры.
при попытке обратиться к процедуре она делает update некоей таблицы (таблица блокируется).
если другой пользователь одновременно попытается произвести чтение с помощью этой ХП, то она не сможет сделать update (будет ждать)

может быть, поможет
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32485859
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalai lamerпри попытке обратиться к процедуре она делает update некоей таблицы (таблица блокируется).
Тогда уж лучше через генератор - он хоть прозрачен для транзакций.

Например процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
as
declare variable flag integer;
begin 
  /*Получаем текущее состояние генератора */ 
 flag = gen_id(GEN_LOCK_UNLOCK,  0 );

  /*Проверяем текущее состояние генератора */ 
  /*Если ноль ставим в 1, типа запираем*/ 
 if(:flag =  0 ) gen_id(GEN_LOCK_UNLOCK,  1 );
 else exit;  /*Иначе - уже кем-то заперто*/ 
 ...
 чего-то делаем - бла-бла-бла;
 ...
 /*Сбрасываем в ноль - типа отпираем*/ 
gen_id(GEN_LOCK_UNLOCK, - 1 );
end
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32485916
DarkUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а) если так уж припекло поставить блокировку, то:


SNAPSHOT TABLE STABILITY (константа consistency ) - изолированность образа (воспроизводимое чтение), при обращении к таблицам блокирует к ним доступ (как минимум на изменения).


т.е. ставишь в consistency , и будет тебе счастье...
если мало, то тама ще куча блокировок есть ( 'shared_read', 'shared_write', 'protected_read', 'protected_write' ), тока вот енто имхо уже не клиент-сервер получается, а фигня какая-то :)

б) более-менее работающая следующая модель (по крайней мере у меня)
1. открываем курсор читающей транзакцией
2. когда пользователь решится изменить какие-либо данные, а) перечитываем весь курсор, б) делаем пустой апдейт/инсерт в пишущей транзакции
3. в зависимости от решения пользователя, откатываем данные, либо сохраняем(и закрываем пишущую транзакцию). после чего, опять рефрешь...

ну и естессна пункт 2-б, в try/except, шобу значить знать, не успел-ли другой пользователь пораньше к этой записи сунутся...

работает быстро, проблем пока не наблюдалось...

а вообще, велком ту IBASE.RU, тама многа чего есть про транзакции
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32485956
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, а хелм влом почитать?
для блокировки группы записе пишем

select * from <имя таблицы> where <условие> for update

а вот с генераторами не советую...
в случае нештатной ситуации и не сбросе генератора, получится что флаг блокировки выставлен... да и нельзя заблокировать отдельные записи.

Но всеж поддерживаю то, что цель весьма странная.... Может следует еще немного подумать и написать более правильно?
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32486024
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем читать статью .
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32486078
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32486116
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж...\r
А мысль высказанная в форуме "Проектирование БД" по поводу подвешивания, весьма недурственна. Поддерживаю!
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32487457
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал использовать Select For Update With Lock (FB 1.5, FibPlus 4.8.1). Блокировки выставляемые через IBExpert из клиента отлавливает нормально, а вот блокировки выставляемые из другого клиента что-то не видит :(
Случайно не из-за версии ли FibPlus?
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32487502
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень даже может быть. Спроси в ихней конференции.
...
Рейтинг: 0 / 0
Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
    #32487591
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обошел этот момент, выставив блокировку через ХП.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Я слышал о блокировке таблиц - но что-то не совсем понял. (Было: Help!!!!!!!!!!!!! please!!!!!!!!!!!!!)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]