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 |
|