SQL для дублирования родительских и дочерних записей
Я пытаюсь найти лучший способ создать инструкцию SQL (в SQL Server) для дублирования родительской записи и всех дочерних записей. У меня есть ниже в качестве примера;
-- duplicate the order
insert into Orders (CustomerID, EmployeeID, OrderDate, RequiredDate,
ShippedDate, ShipVia, Freight, ShipName, ShipAddress,
ShipCity, ShipRegion, ShipPostalCode, ShipCountry)
select CustomerID, EmployeeID, getdate(), RequiredDate, null, ShipVia,
Freight, ShipName, ShipAddress, ShipCity, ShipRegion,
ShipPostalCode, ShipCountry
from Orders
where OrderID = @OrderID
-- find ID of duplicated order
declare @NewOrderID int;
select @NewOrderID = @@IDENTITY;
-- duplicate order details
insert into "Order Details" (OrderID, ProductID, UnitPrice,
Quantity, Discount)
select @NewOrderID, ProductID, UnitPrice, Quantity, Discount
from "Order Details"
where OrderID = @OrderID
Это прекрасно работает для дублирования дочерней таблицы "Детали заказа". Но мне нужна возможность затем дублировать дочерние элементы "Детали заказа", но я не вижу способа изолировать личность каждой из этих записей и перейти к еще одной таблице. Есть ли у кого-нибудь предложения о том, как это можно легко сделать?
1 ответ
Выполните запрос, чтобы найти все дочерние записи, которые, предположительно, имеют ключ, который указывает на родительскую запись. Надеюсь, у вас уже есть индекс по этому полю. Затем просто используйте аналогичную функцию для повторного копирования, за исключением использования нового ключа для дублированного родительского порядка вместо старого.