
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
15.12.2003, 14:16
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
Люди, ситуация такая: есть таблица, в нее заносятся данные, после сохранения в той же транзакции вызывается ХП, которая для новой записи делает некоторые расчеты, которые пишутся в таблицу. Все работает в одной транзакции. Так вот изменения, вносимые с помощью ХП не видны. Если же выйти из программы и запустить ее заново, и перейти в режим редактирования записи, то после сохранения (опять производится вызов ХП, эти изменения видны). Я уже полдня мучаюсь, ничего не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 14:33
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
А невидны чем? Просто допустим если ты открыл IBQuery или IBTable которые работают с этой твоей таблицей, потом запусти процедуру, и после работы процедуры изменения невидны с помощью этих самых открытых IBQuery или IBTable. То все правильно нужно пенеоткрыть запрос/таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 14:40
|
|||
|---|---|---|---|
непонятки с выполнением ХП |
|||
|
#18+
Transaction.CommitRetaining сделай после выполнения ХП и всё будет видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 14:42
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
2Andrey_ я испльзую pFIBDataSet, подключенный к 2-м транзакциям. после коммита транзакции я смотрю ibexpert-ом и видно, что изменения именно от ХП не внесены (а то что я добавлял - присутствует). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 14:52
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
>я испльзую pFIBDataSet, подключенный к 2-м транзакциям Чесно говоря смущает. Ну да ладно. Попробуй так. После заполнения таблици и перед запуском процедуры в той же тарнзакции открой запрос и посмотри данные которые должны поменятся. Потом закрой запрос, запусти процедуру, и после окончания процедуры открой запрос опять, если данные не поменялись, значит всетаки заполнение таблици и процедура работают в разных транзакциях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 15:46
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
2 Andrey_ Все выполняется в одной транзакции, нихрена не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 16:15
|
|||
|---|---|---|---|
непонятки с выполнением ХП |
|||
|
#18+
Поставь параметры пишущей транзакции read_committed rec_version ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 16:16
|
|||
|---|---|---|---|
непонятки с выполнением ХП |
|||
|
#18+
Да, ну и транзакция на чтение должна быть тоже что-то типа read nowait read_committed rec_version В общем читайте про режимы изоляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 16:20
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
2Gold у меня - параметры читающей транзакции: read read_committed rec_version nowait - параметры пишущей транзакции: write concurrency nowait ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 16:21
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
Если разрабатываешь в Делфях, проверь, не открыта ли у тебя БД постоянно через TIBDataBase (при незапущенном exe-шнике). Я уже много раз на эту фишку нарывался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 16:24
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
пробовал разные параметры пишущей транзакции, все равно одно и то же получается. Но прикольно, что если закрыть, а потом открыть программу, и дерактировать данные, то все отлично выполняется и сохраняется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 16:55
|
|||
|---|---|---|---|
непонятки с выполнением ХП |
|||
|
#18+
Ошибка где-то в твоей программе, это точно - ищи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 16:59
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
Вопрос, а процедура как запускается - через execute procedure - или select * from proc Ксожалению я неимею представления о том как работает pFIBDataSet но есть предположение что запросы начинающиеся с select он запускает в одной (читающей) транзакции, а остальные (не select) из обновляющей транзакции и при этом обновляющяя транзакция редко делает commit. Следовательно, если допустить, что заполнение произошло в обновляющей транзакции (и после заполнения транзакция не завершилась commit-ом), а потом была запущена (через select) процедура (в читающей транзакцией) получаем результат: процедура неполучает доступ к данным таблици добавленым при заполнении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 17:16
|
|||
|---|---|---|---|
непонятки с выполнением ХП |
|||
|
#18+
Да уж. Если вникнуть в написанное, то он говорит, что заносит данные в таблицу и потом вызывает ХП и всё это в одной пишущей транзакции - всё должно работать при любом уровне изоляции. А читающей транзакцией полюбому ничего записать не получится, даже если программа переоткроется... Странно всё это. Я даже не представляю как можно так сделать чтоб одна транзакция свои же данные не видела Что-то он не договаривает... Я тут только могу предположить, что в программе несколько пишуших транзакций и изменение таблицы выполняется таки в одной транзакции, а выхов ХП в другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 18:09
|
|||
|---|---|---|---|
|
|||
непонятки с выполнением ХП |
|||
|
#18+
В общем тут немного прояснилось дело. ХП отрабатывает, но во время работы она вызывает другую ХП, и вот из нее данные то вызываются, то нет, передаваемые параметры я смотрел, вроде правильно передаются, а почему через работает, не пойму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2003, 18:49
|
|||
|---|---|---|---|
непонятки с выполнением ХП |
|||
|
#18+
Напиши UDF для отладки, которая выдаёт значение на экран с помощью MessageBox и его же возвращает и смотри чё будет. Я вот часто пользуюсь такой (правда она не для строк): Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1579506]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 506ms |

| 0 / 0 |
