Страница 1 из 1

Не видно записи после вставки из программы

Добавлено: 20 фев 2006, 22:23
_kolyan
Возникла проблема. Есть ли особенности сервера, которые могут объяснить такое поведение или все дело в моем глупом коде.
(Delphi7,компоненты IBX + IB7.1 или FB 1.5)

1) Создаю базу из скрипта, автоматически сгенеренного IBExpert'ом. Этим же IBExpert'ом и создаю, собственно.
2) Имеется таблица, содержащая набор уникальных полей.
3) Из программы создаю запись вэтой таблице при помощи компонента TIBStoredProc и ***_IU процедуры, также сгенеренной IBExpert'ом. Перед этим вручную (вызовом GEN_ID при помощи TIBQuery) получаю значение первичного ключа и передаю в TIBStoredProc. Делаю COMMIT.
4) TIBDataSet подключенный к той же транзакции не показывает наличия записей. IBExpert также видит пустую таблицу.
5) Тем же путем повторно создаю запись с теми же значеними уникальных полей - получаю ошибку нарушения уникальности. DataSet и IBExpert по прежнему показывают пустую таблицу
6) Перезапускаю программу, таблица пустая но все добавления записей работают как задуманно. Тот же набор уникальных полей ошибки не вызывает и запись добавляется нормально.

Параметры транзакции read_committed;rec_version;nowait
У датасета CashedUpdates не стоит

Добавлено: 21 фев 2006, 08:22
Ivan_Pisarevsky
commit дядя будет делать?

Re: Не видно записи после вставки из программы

Добавлено: 21 фев 2006, 08:47
_kolyan
_kolyan писал(а):Делаю COMMIT.
Топик дядя читать будет?

Добавлено: 21 фев 2006, 09:54
Ivan_Pisarevsky
У тебя сколько ibtransaction в программе? И ВСЕ коммитишь? и после этого нет записей? Эт врядли.

Добавлено: 21 фев 2006, 10:47
_kolyan
Ivan_Pisarevsky писал(а):и после этого нет записей? Эт врядли.
В это-то и проблема...
Транзакций конечно несколько, но работа с этой таблицей ведется только в контексте одной, остальные ее не трогают.

Опять же, если не делаю коммит, то чем последующие запуски программы отличаются от первого на новой базе с пустой таблицей.Потом-то все работает...

Добавлено: 21 фев 2006, 10:52
_kolyan
В контексте той-же транзакции добавляется запись в другую таблицу, на которую первая(с которой проблемы) ссылается по FK. В этой второй таблице после соммита все видно отлично.
Какие-то могут быть косяки с FK-ограничением :?:

Добавлено: 21 фев 2006, 16:18
kdv
косяки у тебя именно с транзакциями. Если делаешь commit, то все остальные read_committed увидят новые данные путем перечитывания.

www.ibase.ru/devinfo/ibx.htm

Добавлено: 27 фев 2006, 11:18
Gage
вызовом GEN_ID при помощи TIBQuery) получаю значение первичного ключа и передаю в TIBStoredProc
Покажи вызов.