Главная страница
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.029 c
9-1157377908
Артём
2006-09-04 17:51
2007.08.12
OpenGL & 3DMax


2-1184772078
San17
2007-07-18 19:21
2007.08.12
Как запретить копирования файла ?


2-1183970865
Newser
2007-07-09 12:47
2007.08.12
тип поля - Дата/время


11-1150264932
MZUser
2006-06-14 10:02
2007.08.12
Создание DLL


15-1184312367
Romkin
2007-07-13 11:39
2007.08.12
Принтер с двухсторонней печатью