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

start [/forum/topic.php?fid=40&tid=1579506]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 477ms |

| 0 / 0 |
