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

Sql server 用于复制父记录和子记录的SQL,sql-server,tsql,parent-child,duplicate-data,Sql Server,Tsql,Parent Child,Duplicate Data,我正在尝试找出创建SQL语句(在SQL Server中)以复制父记录和所有子记录的最佳方法。我有下面的例子 -- duplicate the order insert into Orders (CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCit

我正在尝试找出创建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

这非常适合复制子表“订单详细信息”。但我需要能够复制“订单详细信息”的子项,但无法隔离每个记录的标识并传递到另一个表。是否有人对如何轻松完成此任务有任何建议?

要了解最新的身份插入,请尝试:

SELECT @NewOrderID=IDENT_CURRENT('tablename')

您考虑过使用该条款吗?

如果您感兴趣,我可以添加一个示例

使用Gidil建议的OUTPUT子句。输出功能是为这种处理而设计的。