Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизОбновление БД Найти похожие ветки
← →
Belkova © (2005-03-02 17:44) [0]Мастера Delphi! Подскажите, пожалуйста. Есть БД, с которой одновременно работают несколько пользователей. При внесении изменений одним из них, естественно хотелось бы чтобы это видели все оставшиеся. Выполняю следующим образом, все изменения происходят в рамках транзакции.
IBtransaction.starttransaction;
try
{вызовы ХП}
IBtransaction.commit;
except
IBtransaction.rollback;
end;
Для редактируемых таблиц написаны триггеры,( After Insert,AfterUpdate, AfterDelete)
post_event "CHANGE_TABLE"
В приложении используется компонент IbEvents. событие OnEventAlert обрабатывается
if EventName="CHANGE_TABLE" then
begin
IBQuery.close;
IBQuery.Open;
end;
В результате данные у других пользователей иногда обновляются, иногда нет. Что можно сделать.
← →
Desdechado © (2005-03-02 17:48) [1]а не вызывается ли обработка event в момент транзакции записи?
← →
Belkova © (2005-03-02 17:52) [2]А как это узнать? Изменение записей происходит до commit, после чего набор данных не переоткрывается.
← →
Desdechado © (2005-03-02 17:55) [3]например, в обработчике event"а проверить database.InTransaction
← →
AndriyKo (2005-03-02 18:03) [4]/if EventName="CHANGE_TABLE" then
begin
IBQuery.close;
IBQuery.Open;
end;/
Интересно, а если юзер в этот момент редактирует запись или просматривает данные ? Вдруг, ни с того ни с сего - опен-клозе. Эта ситуация предусмотрена ? Лучше при получении эвента взвести какой-нить флаг или кнопочку типа "Обновить" подсветить - пользователь нажмёт, когда захочет.
← →
Belkova © (2005-03-02 18:07) [5]Да эта ситуация предусмотрена, а чтобы автоматечески все обновлялось без кнопочек, так это желание заказчика.
← →
Belkova © (2005-03-02 18:14) [6]Поставила в обработчике проверку на database.InTransaction
Говорит, что нет.
← →
Desdechado © (2005-03-02 18:18) [7]говорит и все равно не обновляет?
← →
Belkova © (2005-03-02 18:27) [8]В том-то и дело что иногда не обновляет. В данный момент обновил.
Почему иногда работает, а иногда нет.
← →
Desdechado © (2005-03-02 19:39) [9]1. event не поймался/не дошел
2. если активна транзакция, то какой может быть Open? Там другие запросы сыплются на сервер, а IB в одной сессии не умеет параллельно запросы выполнять.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c