Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-81357
Александр
2002-07-13 18:04
2002.07.25
TCaption в Word


3-81201
ED_IV
2002-07-04 08:53
2002.07.25
Текст хранимой процедуры в MS SQL


1-81228
Socol
2002-07-05 07:38
2002.07.25
Помогите с процедурой ShowMessage)))


8-81389
Vvedensk
2002-03-15 14:23
2002.07.25
Как увеличить изображения с малой потерью качества подобно таму как это делает PhotoShop


14-81438
Awex
2002-06-27 12:15
2002.07.25
Задача...





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