Форум: "Базы";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c