|
|
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
Уважаемые знатоки! Программирую недавно, помогите разобраться. FB 1.5 FR Delphi 7 FibPlus 5.3.0 Код: plaintext 1. 2. 3. 4. 5. 6. 7. Датасет- TpFibDataSet AutoCommit=False poStartTransaction=True Если датасет использует одну транзакцию на чтение и на запись, то в режиме выполнения программы: Изменяю значение поля, например, K.S_0, K.S_0:=34; Применяю метод Post :DataSet.Post; Данные из связанной таблицы на форме обновляются Далее при закрытии формы подтверждаю или отменяю изменения Transaction.Commit. И все хорошо. Если использую разделенные транзакции, т.е. ReadTransaction и WriteTransaction, то измененные данные могу увидеть только после DataSet.Post, WriteTransaction.CommitRetaining и DataSet.Refresh. Помогите сделать так, чтобы данные из связанных таблиц отображались при изменениях до подтверждения изменений данных. Или не нужно применять разделенные транзакции? Тогда для чего эта возможность в FibPlus? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 11:26:55 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
В IB ты никак не сможешь увидить "грязные" данные, т.е. прочитать данные, которые были изме6нены и не подтверждены другой транзакцией. По поводу раздельных транзакций - там много преимуществ. Зайди на их сайт и поищи статьи. У меня инет тормозит - суда еле зашёл, поэтому сылку найтине могу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 12:37:24 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
[quot Gold]В IB ты никак не сможешь увидить "грязные" данные, т.е. прочитать данные, которые были изме6нены и не подтверждены другой транзакцией.[quot] Ну, конечно же! Спасибо, Gold, и пардон за тупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 12:55:15 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
DataSet.Post, WriteTransaction.CommitRetaining и DataSet.Refresh. Ну, раз у тебя отдельная транзакция для Write, вместо WriteTransaction.CommitRetaining делай просто WriteTransaction.Commit. Чего курсоры клонировать-то без надобности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 13:39:27 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
mvНу, раз у тебя отдельная транзакция для Write, вместо WriteTransaction.CommitRetaining делай просто WriteTransaction.Commit. Чего курсоры клонировать-то без надобности ? Переведи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 13:41:07 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
Чего не так? Я имел в виду реализацию всяких там xxxRetaining. Хоть тресни, физически реализовано-то так, что всегда выполняется обычный Commit (или Rollback), потом повторно выполняется переоткрытие текущего запроса. Ну, на кой ляд восстанавливать его состояние во Write транзакции, если перечитывает он данные в отдельной, Read - транзакции? По поводу: Помогите сделать так, чтобы данные из связанных таблиц отображались при изменениях до подтверждения изменений данных. - нельзя. Для немедленного отображения задай датасету опциию RefreshAfterPost, а в обработчики AfterPost и AfterDelete добавь: Код: plaintext 1. 2. Чтобы видеть возможные изменения в других записях (ну, там, григгерами что-нибуди намахал), вместо .Refresh используй .FullRefresh (эта штука классная, конечно, но не злоупотребляй ею - считай, это рефрешь каждой записи). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 13:57:53 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
mvЧего не так? Я имел в виду реализацию всяких там xxxRetaining. Хоть тресни, физически реализовано-то так, что всегда выполняется обычный Commit (или Rollback), потом повторно выполняется переоткрытие текущего запроса . Фантазии и домыслы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 14:03:05 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
Ну-ну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 14:09:06 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
Еще раз спасибо всем за советы и мнения. Остановился на использовании одной транзакции- и пишущей и читающей. Тогда еще вопрос: как узнать, был ли Commit? Ведь получается, что состояние транзакции всега InTransaction? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 14:49:00 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
Подпишись на сообщения, которые будут, например, триггеры генерировать при изменении данных. Они (сообщения) станут доступны только после Commit транзакции, где сообщения были сгенерированы.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 14:57:44 |
|
||
|
Разделенные транзакции в FibPlus 5
|
|||
|---|---|---|---|
|
#18+
mvПодпишись на сообщения, которые будут, например, триггеры генерировать при изменении данных. Они (сообщения) станут доступны только после Commit транзакции, где сообщения были сгенерированы.. Спасибо. Пошел узнавать, как это делается :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2004, 15:08:00 |
|
||
|
|

start [/forum/moderation_log.php?user_name=%D0%A1%D0%B5%D0%B3%D1%83%D0%BD]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 412ms |
| total: | 700ms |

| 0 / 0 |
