Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа двух пользователей в FireBird [D7, IB6.x]


Страницы:   1 2

Diplomat ©   (2010-01-29 05:44:00) 

Доброго времени суток господа!! Подскажите, пожалуйста, как сделать обновление данных у "второго" пользователя, если "первый" внес какие-то изменения в базу данных.

Ежеопределенный ревреш путем отсоединения-подсоединения, или есть какой-то другой путь?
Используется IbQuery.
Заранее благодарен!!!


Виталий Панасенко(дом)   (2010-02-06 22:30:00) [1]

только весь прикол в чем: вот ты заблокировал запись, "шоб ни какая вражья морда" тебе не мешала.. отредактировал все.. а через 0,000514545 секунды после твоего изменения Я(Царь и  Бог!) эту же самую запись ИЗМЕНИЛ! смысл? в любом случае - КТО ПОСЛЕДНИЙ, ТОТ И ПАПА! разве, что ты в этом промежутке (между 0,000514544 и 0,0005145450 начнешь снепшот тразакцию.. что мало вероятно...


arigatai   (2010-02-06 22:11:00) [2]


> Скажите пожалуйста, какую версию FIBPlus использовать? В
> чем ее триальность, как это может отразиться на будущих
> программах?

если не ошибаюсь, триальная версия работает ТОЛЬКО при запущщщенной IDE Delphi :-)

P.S. а вообще, если планируешь и в будущем создавать что-либо серьёзное (с профессиональной точки зрения) на Delphi/Builder'e под СУБД Interbase/ Firebird(особенно это касается последнего) - мой тебе совет: купи эти компоненты и не взрывай себе моСК (велосипед-то уже давно изобретён!!! ;-) ) http://www.devrace.com/ru/fibplus/(1500р. за эти компоненты для профессионального разработчика - можно сказать почти бесплатно!).


Diplomat   (2010-02-03 18:43:00) [3]

Скажите пожалуйста, какую версию FIBPlus использовать? В чем ее триальность, как это может отразиться на будущих программах?


Diplomat   (2010-02-03 17:58:00) [4]

Спасибо, буквально вчера про холостой Update читал, не совсем понял, то что написано, но...
FIBPlus - есть платная библиотека компонентов, или у нее есть столь же позитивная бесплатная версия?


Виталий Панасенко(дом)   (2010-02-02 20:05:00) [5]

если честно, я так до конца и не понял сути..но! если тебя интересует вариант, чтобы, как в Парадоксе, юзер начал редактировать запись и другие не могли ее редактировать одновременно(я все именно так понял), то:1)Использовать FIBPlus -там есть опция "блокировать запись". 2)Либо, используя IBX, самому заблокировать запись в контексте одной транзакции, холостым Update типа
update table1
set F1=F1
where условие по ключу одной записи
(FIBPlus как раз так и делает)
тогда другие "вражеские морды" не смогут редактировать эту запись, пока "пап" не закончит.. или кончит..:-)


Diplomat   (2010-02-02 18:30:00) [6]

Нашел некоторые ссылки на Select For Update With Lock, буду изучать.
Спасибо Sergey13!!!!!!!!!!!!!!!!!!!!!!!!


Sergey13   (2010-02-02 16:33:00) [7]

> [15] Diplomat ©   (02.02.10 16:26)

> У меня идет проверка по двум составляющим в данном случае
> по справочнику сел.

Не понял эту фразу. И что из того что идет проверка?
Вообще дело твое - хочешь проверять/обновлять - делай. Но смысла в этом обычно немного (если он вообще есть), а телодвижений в клиенте и на серваке требует постоянно. Причем непроизводительных телодвижений.

> Но, Select For Update With Lock - это я если правильно понял
> будет срабатывать в момент транзакции, если вызвать ее у
> второго пользователя?

Просто сработает холостой апдейт без срабатывания тригеров и запись будет залочена для изменения другой сессией.


Diplomat   (2010-02-02 16:26:00) [8]

У меня идет проверка по двум составляющим в данном случае по справочнику сел. Но, Select For Update With Lock - это я если правильно понял будет срабатывать в момент транзакции, если вызвать ее у второго пользователя?


Sergey13   (2010-02-02 08:33:00) [9]

> [12] Diplomat ©   (01.02.10 19:18)
> как заблокировать запись при начале редактирования у другого
> пользователя?

Не помню как в ИБ6, а ФБ есть конструкция Select For Update With Lock.

> Но более чем вероятно, что двое под разными ID номерами
> добавят например новое наименование села.

Села как грибы после дождя растут? Кто угодно может их создавать?
От этого частично может уберечь уникальный индекс по названию. В остальном только жесткими административными методами вплоть до лишения премии.
Иначе полезут
Новые Васюки
НОВЫЕ ВАСЮКИ
новые васюки


Diplomat   (2010-02-01 19:30:00) [10]

Маловероятно, что двое будут править личные данные пастуха Сидорова.
Но более чем вероятно, что двое под разными ID номерами добавят например новое наименование села. Попробовал, так и есть...


Diplomat   (2010-02-01 19:18:00) [11]

Простите, как заблокировать запись при начале редактирования у другого пользователя?
Дата-время последней модификации данных опять же будет известна, если закрыть и затем опять открыть IBDatabase, не так-ли?


Sergey13   (2010-02-01 16:53:00) [12]

> [9] Diplomat ©   (01.02.10 16:39)
> а например в сельской администрации

И в понедельник с утра вся сельская администрация в полном составе из двух человек кинулась править личные данные пастуха Сидорова?
И стОит из-за этого огород городить? Не проще ли заблокировать запись при начале редактирования?


Ega23   (2010-02-01 16:50:00) [13]


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


если есть отличная от нуля вероятность - значит рано или позно событие произойдёт. После этого твою программу признают расово-негодной.


> Насчет уведомления пользователя, надо где-то держать список
> IP подключенных?


Как вариант - достаточно держать таблицу с одним полем и одной записью - дата-время последней модификации данных. И время от времени "пинговать" эту таблицу.


Diplomat   (2010-02-01 16:39:00) [14]

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

База данных по людям, где вероятность того, что они например работают не только в сумасшедшем доме, а например в сельской администрации, а таких много, и все они в сети?
Насчет уведомления пользователя, надо где-то держать список IP подключенных?


Sergey13   (2010-02-01 13:52:00) [15]

> [7] Ega23 ©   (01.02.10 13:39)

Более того, раз два и более пользователя работают с одними и теми же данными, то велика вероятность того, что они работают или в сумашедшем доме или в тестовой базе, куда поленились нагенерировать достаточно данных. 8-)
ИМХО.


Ega23   (2010-02-01 13:39:00) [16]

Плохо так делать.
Сидишь, смотришь на экран, испытываешь катарсис.
Тут ррраз - и пошло всё обновляться.

Теперь усложним ситуацию. 10 пользователей. Сначала один что-то обновил, через 10 секунд второй что-то удалил, ещё через 10 третий что-то добавил...
А десятый наблюдает постоянное обновление данных.

Если уж настольео необходимо уведомлять всех пользователей об изменениях в БД - сделай индикатор, наподобие ICQ. Штоб заморгало где-нить внизу экрана. А дальше - по желанию. Надо - обновил данные, нет - сидишь со старыми.


Diplomat   (2010-01-31 01:45:00) [17]

Вообще-то да! Спасибо!


Кщд   (2010-01-30 18:56:00) [18]

>Diplomat ©   (30.01.10 04:11) [4]
post_event в триггере чем не устраивает?


Diplomat   (2010-01-30 04:11:00) [19]

простой запрос, который определяет, были ли какие либо изменения
можно примерчик?


Дмитрий С   (2010-01-29 18:44:00) [20]


> Сделать кнопку "Обновить данные".
>

Поддерживаю.

Если сильно надо автоматически, я бы сделал более простой запрос, который определяет, были ли какие либо изменения, и если были - то refresh-л б DataSet


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо