【问题标题】:SQL for duplicating parent and children records用于复制父子记录的 SQL
【发布时间】:2013-08-01 04:31:01
【问题描述】:

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

这非常适合复制子表“订单详细信息”。但是我需要能够复制“订单详细信息”的孩子,但看不到隔离每条记录的身份并传递给另一个表的方法。有没有人对如何轻松实现这一点有任何建议?

【问题讨论】:

  • 按照 Gidil 的建议使用 OUTPUT 子句。 OUTPUT 功能就是为这种处理而设计的。

标签: sql-server tsql parent-child duplicate-data


【解决方案1】:

要找出最新的身份插入,请尝试:

SELECT @NewOrderID=IDENT_CURRENT('tablename')

【讨论】:

    【解决方案2】:

    您是否考虑过使用OUTPUT 子句?
    如果您有兴趣,我可以添加一个示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多