Sql Server Вставить запрос В несколько таблиц из временных таблиц

У меня две таблицы: один – мастер, а другой – таблица подробностей, таблица сведений содержит идентификатор главной таблицы в качестве ссылки

Вот моя таблица

**Table_Customer** CustomerId CustomerName 1 A 2 B **Table_CustomerRelatives** RelativesId CustomerId RelativesName Address 1 1 M xyz 2 1 N mno 3 2 L pqr 4 2 O ghy 

Здесь CustomerId и RelativesId являются столбцами идентификации, поэтому автоматическое генерирование значения столбца

Здесь у меня есть две таблицы temp, например

 **TembreryTableCustomer** CustomerId CustomerName 1 F 2 G 3 H **TembreryTableDetails** CustomerId RelativesName Address 1 S fgg 1 T dfg 2 U ghj 3 V jkl 3 W rty 

Как вставить таблицы таблицы Temp в мои таблицы с идентификатором. здесь я хочу вставить строки клиента temp table и получить идентификационное значение, а затем вставить данные таблицы temp, используя идентификатор клиента temp table.

Вы можете использовать предложение output инструкции merge для построения сопоставления идентификатора временного клиента с новым идентификатором.

 declare @Map table (Old int, New int); ;merge Table_Customer dest using TembreryTableCustomer src on dest.CustomerName = src.CustomerName when not matched then insert (CustomerName) values (CustomerName) output inserted.CustomerID, src.CustomerID into @map; insert Table_CustomerRelatives (CustomerId, RelativesName, Address) select m.New , t.RelativesName , t.Address from TembreryTable2 t join @Map m on t.CustomerID = m.Old; 

Пример в SQL Fiddle.

Существует несколько подходов в зависимости от версии SQL и ваших предпочтений в отношении того, где поставить работу.

Я считаю, что использование последовательностей намного проще в использовании, чем столбцы идентификации. Вы можете использовать одну и ту же последовательность в ваших временных таблицах, как в ваших постоянных таблицах, поэтому нет «исправления».

Если запретить это, вы можете вставить в постоянную таблицу с предложением вывода для захвата вновь назначенных идентификаторов. Из ссылки, посмотрите пример «E». Основной особенностью является вывод постоянных идентификаторов вместе с идентификаторами таблицы temp.

Давайте будем гением компьютера.