Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
ВнизПроблемы с видимостью транзакций. Найти похожие ветки
← →
NetWanderer (2002-07-04 11:41) [0]Уважаемые знатоки, столкнулся со следующей проблемой : при непостредственном старте транзакции StartTransaction и последующим ее завершением по CommitRetaining(пользуюсь IBX),другие пользователи видят результаты ее работы только после отсоединения-присоединения к БД. В чем может быть дело ? Заранее благодарен.
← →
Alexandr (2002-07-04 11:45) [1]дык другие пользователи в какой транзакции?
Если READCOMMITED? то им запрос переоткрыть надо.
А если RepeatableRead то транзакцию переоткрыть
← →
Johnmen (2002-07-04 11:54) [2]Да, знакомый эффект...Как побороть с минимальными затратами - вопрос...
← →
Alexandr (2002-07-04 12:12) [3]2Johnmen:
как побороть?
А в чем проблема?
← →
Alexandr (2002-07-04 12:17) [4]тут читали?
http://fibplus.com.ua/rus/articles/client_synchonize.shtml
А вообще-то надо отучать юзеров от этой привычки
← →
kaif (2002-07-04 12:18) [5]При любом Commit (в т.ч.) при CommitRetaining, если транзакция другого пользователя ReadCommitted nowait, после переоткрытия запроса он увидит новые данные. Следовательно в TIBTransaction у юзеров в Params нет ReadCommitted nowait. Это значение можно установить дважды щелкнув на компоненте TIBTransaction и выбрав из 4 предложенных ReadCommitted.
← →
Johnmen (2002-07-04 12:27) [6]>Alexandr © (04.07.02 12:17)
Сейчас почитаю...
>kaif © (04.07.02 12:18)
Позже попробую...:)
← →
kaif (2002-07-04 12:55) [7]>2Alexandr © (04.07.02 12:17)
Прочитал статью.
Мне кажется (может я и неправ), что можно сделать проще, воспользовавшись тем, что в POST_EVENT можно подставить имя события. Я пробовал, у меня такое работает:
/*Процедура, создающая именованные события*/
CREATE PROCEDURE POST_NAMED_EVENT(EVENT_NAME VARCHAR(31))
AS
BEGIN
POST_EVENT :EVENT_NAME;
END
^
С такой процедурой, вероятно, можно обойтись без накопителя изменений. Хотя, честно говоря все это мне не очень нравится. Я боюсь за надежность систем, в которых многое завязано на EVENT.
← →
Alexandr (2002-07-04 12:57) [8]а с клиента как регистрировать подписку на непонятно какое событие?
Там ведь надо будет полностью текст события указывать?
Или я что-то путаю?
← →
Johnmen (2002-07-04 13:03) [9]Ха ! Получилось наоборот ! Сначала попробовал - все как надо !!!
А теперь только начну читать....
← →
Alexandr (2002-07-04 13:12) [10]не понял. Что попробовал? Что начнешь читать?
← →
Johnmen (2002-07-04 13:22) [11]Вот это самое :
>Johnmen © (04.07.02 12:27)
>>Alexandr © (04.07.02 12:17)
>Сейчас почитаю...
>>kaif © (04.07.02 12:18)
>Позже попробую...:)
Кстати, уже пробежался по статье - честно говоря, ничего нового для себя не почерпнул....
← →
Alexandr (2002-07-04 13:26) [12]что получилось? Через параметризованный Post_Event?
Объясните мне как вы на клиенте знаете какое событие регистрировать?
← →
Johnmen (2002-07-04 13:37) [13]>Alexandr © (04.07.02 13:26)
>Объясните мне как вы на клиенте знаете какое событие регистрировать?
Если это ко мне вопрос - то я здесь один :)))))
И я не обсуждал вопросов с Post_Event.
Это делал kaif © .
← →
Alexandr (2002-07-04 13:42) [14]а ты попробовал вот это?
kaif © (04.07.02 12:18)
При любом Commit (в т.ч.) при CommitRetaining, если транзакция другого пользователя ReadCommitted nowait, после переоткрытия запроса он увидит новые данные. Следовательно в TIBTransaction у юзеров в Params нет ReadCommitted nowait. Это значение можно установить дважды щелкнув на компоненте TIBTransaction и выбрав из 4 предложенных ReadCommitted.
--------------------------------------------------------------------------------
и что тут как надо? И что должно получиться. Т.е. тут все правильно, но этоже очевидно. А как по-другому-то? Я просто удивился что раньше это кому-то неизвестно было.
Это же естественно.
← →
Johnmen (2002-07-04 14:05) [15]Ну вот я, например, считал, что данные параметры - по умолчанию...ан нет...
← →
Alexandr (2002-07-04 14:40) [16]а понятно.
Ну так тож IBX там все не как у людей...
Пора бы привыкнуть...
← →
kaif (2002-07-04 15:34) [17]Я насчет Post_event всего лишь идею высказал. Например, если я отображаю нечто на экране, скажем, таблицу customer, то почему бы мне не подписаться на ивенты:
customer_u
customer_d
customer_i
Тогда триггеры таблицы customer могут дать мне понять, что что-то произошло. Правда, номер вставленной другим юзером записи я таким способом не получу. Но мне почему-то кажется, что клиент сам должен принимать решения, что делать. Я бы зажег светодиод по ивенту (три ветодиода Insert, Delete, Update) а рядом поместил бы кнопку Refresh.
Это был бы простой механизм, либеральный по отношению к транзакциям и не дергающий сильно клиентов.
Понятно, что это не та же задача. Это просто другой взгляд на вещи.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c