Я пытаюсь найти лучший способ создать оператор 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
Это отлично работает для дублирования дочерней таблицы «Детали заказа». Но мне нужна возможность затем дублировать дочерние элементы «Детали заказа», но я не вижу способа изолировать идентичность каждой из этих записей и перейти к еще одной таблице. Есть ли у кого-нибудь предложения о том, как это легко сделать?
Выполните запрос, чтобы найти все дочерние записи, которые предположительно имеют ключ, указывающий на родительскую запись. Надеюсь, у вас уже есть указатель по этому полю. Затем просто используйте аналогичную функцию для повторного копирования, за исключением использования нового ключа для дублированного родительского заказа вместо старого.