Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.037 c
2-1184748455
Groza
2007-07-18 12:47
2007.08.12
Как поменять метку диска с помощью Delphi?


15-1184498103
ламер2007
2007-07-15 15:15
2007.08.12
Win2003


3-1177700288
Цукор5
2007-04-27 22:58
2007.08.12
dbase3


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


15-1184232418
boriskb
2007-07-12 13:26
2007.08.12
Ничего лучшего, чем "Офигеть!!!" придумать не могу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский