2013-07-31 2 views
2

Я пытаюсь найти лучший способ создать инструкцию SQL (в SQL Server) для дублирования родительской записи и всех записей с детьми. У меня есть пример ниже;SQL для дублирования записей родителей и детей

-- 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 

Это прекрасно работает для дублирования детского стола «Сведения о заказе». Но мне нужна возможность затем дублировать детей «Детали заказа», но не вижу возможности изолировать личность каждой из этих записей и перейти к еще одной таблице. Есть ли у кого-нибудь какие-либо предложения о том, как это можно легко осуществить?

+0

Используйте предложение OUTPUT, как предложил Гидил. Функциональность OUTPUT предназначена для такого рода обработки. –

ответ

0

Чтобы узнать последний вкладыш тождественность, пожалуйста, попробуйте:

SELECT @NewOrderID=IDENT_CURRENT('tablename') 
0

Рассматривали вы с помощью предложения OUTPUT?
Я могу добавить пример, если вам интересно

Смежные вопросы