用于复制父记录和子记录的 SQL

用于复制父记录和子记录的 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

执行查询以查找所有子记录,这些记录可能具有指向父记录的键。希望您已经对该字段有一个索引。然后只需使用类似的函数再次进行复制,但要使用重复父订单的新键而不是旧键。

相关内容