Главная страница
    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.48 MB
Время: 0.006 c
3-81161
Sergey_
2002-07-04 09:06
2002.07.25
Помогите кто знает. Как задекларировать в Delphi переменные ...


1-81268
AL2002
2002-07-15 12:16
2002.07.25
Иконки нет


6-81407
Orsk
2002-05-15 05:59
2002.07.25
Помогите пожалуйста, скажите как считать время про-го в инете


8-81380
SemenK
2002-03-19 20:48
2002.07.25
Как задать один из цветов изображения - прозрачнім в компоненте Image ?


3-81148
Spinx
2002-07-04 02:10
2002.07.25
ограничения FIBPlus 4.6 ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский