У меня есть С++ объект (структура), которую требуется по частям сохранить в две таблицы. Эти две части связываются primary key:
table1
id Primary Key, Identity, Not Null
data1 колонка с некими данными
table2
id Primary Key
foreign_id ключ table1.id
data2 колонка с данными
Этих структур миллионы, и необходимо загрузить их в базу за минимальное время. Во вторую таблицу я их вставляю вызовом bulk функций, типа bcp_sendrow, но для этого мне надо знать id для foreign_id из первой таблицы, поэтому перед этим я вставляю данные в таблицу 1 и получают id вставленной строки. Псевдокод:
SqlExecDirect(.."INSERT INTO table1 (data1) VALUES (MyStruct.data1)"..);
SqlExecDirect(.."SELECT @@identity"..);
SqlFetch(sqlStmtHandle);
MyStruct.Id = (int)SqlGetDataInt(sqlStmtHandle);
Эта часть работает значительно медленнее bulk-функций.
Подскажите какой-то более оптимальный способ заполнения связанных таблиц.
Или подскажите, можно ли сделать INSERT с получением созданного primary key не построчно, а как-то быстрее, блоками?