Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Последовательность выполнения запроса  [new]
vladka63
Member

Откуда:
Сообщений: 1689
Нужно перенести данные двух таблиц из одной базы в аналогичные таблицы (состав полей и тип данных) другой базы.

1. Первая таблица в обоих базах - содержит данные и имеет одинаковое название - Object.
2. Вторая таблица (ObjectNameType) содержит внешние ключи:
- внешний ключ из таблицы 1 (Object);
- внешний ключ из таблицы 3 (таблица 3 (ObjectType) аналогична в обоих базах: поля, Id - все одинаково).

При переносе в целевую таблицу 1 (Object) для объектов создаются новые id.

Вопрос в следующем:
как правильно осуществить перенос во вторую таблицу (ObjectNameType)?

Запрос для переноса в первую таблицу (все одинаково: название таблиц, поля):
INSERT INTO [Object_db].[dbo].[Object] ([ObjectName])
SELECT [ObjectName]
FROM [Object_db].[dbo].[Object]

Спасибо :)
27 апр 16, 13:35    [19112584]     Ответить | Цитировать Сообщить модератору
 Re: Последовательность выполнения запроса  [new]
iljy
Member

Откуда:
Сообщений: 8711
vladka63,

declare @t table (idOld int, idNew int)

MERGE db2..T1
USING db1..T1 src on 1=0
WHEN NOT MATCHED THEN INSERT (ObjectName) VALUES(src.ObjectName)
OUTPUT src.id, inserted.id INTO @t;

INSERT db2..T2
SELECT ..., i.idNew
FROM db1..T2 t join @t i on t.id1 = i.idOld
27 апр 16, 13:48    [19112638]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить