Копирование нескольких строк и связанных строк в SQL - PullRequest
1 голос
/ 29 августа 2011

Кто-нибудь знает простой способ копирования нескольких строк таблицы и связанных с ней элементов?

В моем упрощенном примере у меня есть две таблицы, одна с таблицей для компаний и одна для их сотрудников, и я хотел бы иметь возможность простым способом клонировать целые компании со всеми их сотрудниками.

[Companies]

- ID (Auto-increment)
- Name

[Employees]

- ID
- CompanyID (Foreign Key)
- Name

Я играл с предложением OUTPUT, но только что смог вернуть вставленные идентификаторы без ссылки на исходную строку.

Я просто не могу понять, как связать вставленную строку с исходной?

Если оператор вставки возвратил таблицу, подобную этой:

@mappingTable

-InsertedCompanyID
-OriginalCompanyID

Я мог бы выполнить такое заявление, чтобы скопировать всех сотрудников:

INSERT INTO Employees (CompanyID, Name)
SELECT m.InsertedCompanyID, x.Name FROM @mappingTable m 
INNER JOIN Employees x (x.CompanyID = m.OriginalCompanyID)

Или я на неверном пути? Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 29 августа 2011

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

Посмотрите на этот вопрос: Использование слияния..output toполучить сопоставление между source.id и target.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...