Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.25;
Скачать: CL | DM;

Вниз

Проблемы с видимостью транзакций.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
1-81337
Cola
2002-07-08 22:17
2002.07.25
XL-Report свойства


6-81399
Uzer
2002-05-15 12:20
2002.07.25
win - unix socks


1-81261
BAHO
2002-07-15 01:23
2002.07.25
Подскажите про потоки....


1-81299
HEXBAT
2002-07-12 10:53
2002.07.25
Помогите с Маской ввода Плиз


1-81266
Gala
2002-07-14 12:27
2002.07.25
отмена выделения текста в ячейке DBgrid