C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
генератор и дочерняя таблица
telepath
Отправлено: 21.12.2004, 14:43


Станционный диспетчер

Группа: Участник
Сообщений: 132



Доброго времени суток!
Есть две таблицы одна индексирована по полю IDX, вторая связана с ней по этому полю. В первой таблице есть генератор, который перед вставкой дает ей значение IDX. Но, запись делается в рамках одной транзакции в обе таблицы. И когда вторая таблица пытается взять значение IDX из первой таблицы, то получает NULL (судя по всему записи еще как бы не существует или генератор не сработал еще).
Не подскажете, как это можно обойти?
код примерно такой:
CODE
Transaction->StartTransaction();
tRec->Insert(); //Первая таблица
tRec->FieldByName("ORG_ID")->Value = org_id;
/*.......*/
tRec->Post();

tRes->Insert();
tRes->FieldByName("IDX")->Value = tRec->FieldByName("IDX")->Value; //Это дает NULL
/*.......*/
tRes->Post();
Transaction->Commit();
Guest
Отправлено: 21.12.2004, 15:32


Не зарегистрирован







1. Сделать две транзакции.
2. Сначала вызвать генератор а потом добавлять записи.
А какя СУБД-то?
telepath
Отправлено: 21.12.2004, 16:04


Станционный диспетчер

Группа: Участник
Сообщений: 132



Спасибо, нашел как уже... просто из кода генератор с нулевым приращением вызываю. А база firebird

Вернуться в Работа с базами данных в C++Builder