Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

FireBird 2.0 многопользовательская работа   Найти похожие ветки 

 
DelphiLexx ©   (2007-04-27 11:20) [0]

Я разрабатываю приложение c БД, которое работает с FireBird2.0. Возникла следующая проблема: открываем два экземпляра моего приложения, сначала меняем значение записи в 1-ом экземпляре приложения но Transaction.Commit не делаем, а затем меняем значение этой же записи во 2-ом экземпляре программы, выскакивает ошибка ...wait transaction... Использовать CashedUpdate нет желания, да и с помощью него нельзя выделавать определенные сложности, например, при изменении значения ячеек для определенных записей в BeforePost вызываются разные Sql-запросы, т.е. я создается FibQuery c определенном SqlText"ом и выполняется в текущей транзакии. Скажите, пожалуйста, как можно заставить FireBird 2.0 редактировать одну и туже запись разным пользователям без конфликтом. Вообщем нужно как-то это сделать без CashedUpdates.


 
Sergey13 ©   (2007-04-27 11:23) [1]

> [0] DelphiLexx ©   (27.04.07 11:20)
> но Transaction.Commit не делаем

Молоток роняем, но ногу не убираем. Почему больно то?


 
DelphiLexx ©   (2007-04-27 11:31) [2]


> > [0] DelphiLexx ©   (27.04.07 11:20)
> > но Transaction.Commit не делаем

Почему не делаю сразу транзакцию обяъясняю, потому что приложение содержит кучу справочников, с кучей записей которые может редактировать пользователь, причем сохранение в БД происходит при нажатии кнопки ОК или кнопки в виде дискетке, при этом пользователь может отменить внесенные изменения с момента нажатия дискетки с помощью кнопки Undo.


 
Desdechado ©   (2007-04-27 11:34) [3]

>  Использовать CashedUpdate нет желания,
В этом и проблема. Обрети желание сам или юзеры помогут.


 
Jan1   (2007-04-27 11:37) [4]


> при этом пользователь может отменить внесенные изменения
> с момента нажатия дискетки с помощью кнопки Undo.

можно поиграться с вложенными транзакциями.
читать: http://www.ibase.ru/devinfo/savepoints.htm


 
Sergey13 ©   (2007-04-27 11:39) [5]

> [2] DelphiLexx ©   (27.04.07 11:31)
> или кнопки в виде дискетке

Это конечно важнейший фактор. Попробуй изменить рисунок более нейтральный. 8-)


 
ЮЮ ©   (2007-04-27 11:39) [6]

[2] DelphiLexx ©   (27.04.07 11:31)

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


 
Sergey13 ©   (2007-04-27 11:39) [7]

> [4] Jan1   (27.04.07 11:37)

А что это даст?


 
ЮЮ ©   (2007-04-27 11:42) [8]

>с кучей записей которые может редактировать пользователь,

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


 
Jan1   (2007-04-27 11:45) [9]


> А что это даст?

откат к нужному состоянию.


 
Sergey13 ©   (2007-04-27 11:50) [10]

> [9] Jan1   (27.04.07 11:45)
> откат к нужному состоянию.

Часов через 5-7 после отрытия транзакции. 8-)


 
TohaNik ©   (2007-04-27 13:05) [11]

Я так понял что доступ через FIB
Пропиши в параметры пишущей транзакции

wait
no_rec_version

но в свете
> при изменении значения ячеек для определенных записей в
> BeforePost вызываются разные Sql-запросы, т.е. я создается
> FibQuery c определенном SqlText"ом и выполняется в текущей
> транзакии

все это специфично очень...


 
Виталий Панасенко ©   (2007-04-27 13:35) [12]


> DelphiLexx ©   (27.04.07 11:20)  


> в BeforePost вызываются разные Sql-запросы, т.е. я создается
> FibQuery c определенном SqlText"ом и выполняется в текущей
> транзакии
А триггеры зачем тогда придумали ?


 
Виталий Панасенко ©   (2007-04-27 13:36) [13]


> DelphiLexx ©   (27.04.07 11:20)  


> в BeforePost вызываются разные Sql-запросы, т.е. я создается
> FibQuery c определенном SqlText"ом и выполняется в текущей
> транзакии
А триггеры зачем тогда придумали ?


 
DelphiLexx ©   (2007-04-27 14:59) [14]


> А триггеры зачем тогда придумали ?

Я исхожу из позиций чтобы БД была как много проще. Это мне нужно чтобы обновление БД у клиента происходила как можно более спокойней


 
Sergey13 ©   (2007-04-27 15:06) [15]

> [14] DelphiLexx ©   (27.04.07 14:59)

> Я исхожу из позиций

Странные у тебя позиции. Транзакции ты хочешь использовать через причинное место потому что кеширование тебе не нравится. Тригеры мешают спать при обновлении клиентов.
Может тебе свою СУБД разработать?


 
Desdechado ©   (2007-04-27 15:08) [16]

> Может тебе свою СУБД разработать?
А у него и так каждому юзеру по базе. Остается забыть акцесс, пересесть на CSV.


 
Виталий Панасенко ©   (2007-04-27 17:10) [17]


> DelphiLexx ©   (27.04.07 14:59) [14]
>
> > А триггеры зачем тогда придумали ?
>
> Я исхожу из позиций чтобы БД была как много проще. Это мне
> нужно чтобы обновление БД у клиента происходила как можно
> более спокойней

Думаю, вряд ли они будут более спокойней...



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

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.037 c
15-1183710520
Студент_111
2007-07-06 12:28
2007.08.12
Сколько денег трясти?


2-1184694657
Sdubaruhnul
2007-07-17 21:50
2007.08.12
Что-то вроде событий, вызываемых потоком.


2-1184578180
vasIZmax
2007-07-16 13:29
2007.08.12
Включить/выключить прокси


1-1181039051
pohil
2007-06-05 14:24
2007.08.12
Изменение видеорежима


2-1184074536
Xion
2007-07-10 17:35
2007.08.12
Проблема с потоком.