Eu tenho tabelas Listings
e Media
que é uma tabela filha Listings
e vinculada com base ListingId
no banco de dados "origem" e tenho as mesmas tabelas no banco de dados "destino".
copie todas as listagens para a tabela de destino Listagens e seus filhos para Media
a tabela de destino lembrando que a Media
tabela de destino tem que pegar o ListingId
que foi inserido na Listings
tabela de destino e isso é umidentity column
INSERT INTO Listings ( Title, ...)
SELECT Title..
FROM [source].[dbo].Listings
WHERE ListingId IN (
SELECT s.ListingId
FROM [source].[dbo].Listings s
LEFT JOIN Listings d ON s.ImportedReferenceNumber = d.ImportedReferenceNumber
WHERE d.ListingId IS NULL
);
-- Insert corresponding media records into destination.Media table with new ListingIds.
INSERT INTO Media ( ListingId, Url, ThumbnailUrl, TypeId)
SELECT New.ListingID, Url, ThumbnailUrl, TypeId
FROM [source].[dbo].Media m
INNER JOIN (
SELECT s.ListingId, d.ListingId AS NEW_ListingId
FROM [source].[dbo].Listings s
LEFT JOIN Listings d ON s.ImportedReferenceNumber = d.ImportedReferenceNumber
WHERE d.ListingId IS NULL
) AS NEW ON m.ListingId = NEW.ListingId;
A primeira parte funciona bem, mas nada é inserido no destino Media
porque a consulta que tenho quando executada, não há diferença entre a Listings
tabela de origem e destino