Не видно записи после вставки из программы
Не видно записи после вставки из программы
Возникла проблема. Есть ли особенности сервера, которые могут объяснить такое поведение или все дело в моем глупом коде.
(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 не стоит
(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 не стоит
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Re: Не видно записи после вставки из программы
Топик дядя читать будет?_kolyan писал(а):Делаю COMMIT.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
В это-то и проблема...Ivan_Pisarevsky писал(а):и после этого нет записей? Эт врядли.
Транзакций конечно несколько, но работа с этой таблицей ведется только в контексте одной, остальные ее не трогают.
Опять же, если не делаю коммит, то чем последующие запуски программы отличаются от первого на новой базе с пустой таблицей.Потом-то все работает...
косяки у тебя именно с транзакциями. Если делаешь commit, то все остальные read_committed увидят новые данные путем перечитывания.
www.ibase.ru/devinfo/ibx.htm
www.ibase.ru/devinfo/ibx.htm