主页
Top.Mail.Ru Yandeks.Metrika
论坛:“基地”;
当前存档: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
开始
POST_EVENT :EVENT_NAME;
结束
^
С такой процедурой, вероятно, можно обойтись без накопителя изменений. Хотя, честно говоря все это мне не очень нравится. Я боюсь за надежность систем, в которых многое завязано на 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.61 MB
时间:0.043 c
4-81513
暗号
2002-05-14 19:08
2002.07.25
特雷


1-81269
Oleg Laukart
2002-07-08 12:44
2002.07.25
RichEdit的问题


14-81461
最大
2002-06-25 16:21
2002.07.25
Font.Charset支持


3-81145
fissher
2002-07-01 20:55
2002.07.25
参照完整性


1-81248
nwc_eminem
2002-07-14 18:20
2002.07.25
如何写入注册表值





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский