Tôi muốn INSERT
hàng nhiều hàng (sử dụng INSERT SELECT
) và OUTPUT
tất cả ID mới và cũ thành bảng "ánh xạ".INSERT nhiều hàng và OUTPUT giá trị ban đầu (nguồn)
Làm cách nào để nhận được ID gốc (hoặc bất kỳ giá trị nguồn nào) trong mệnh đề OUTPUT
? Tôi không thấy cách nào nhận được bất kỳ giá trị nguồn nào ở đó.
Đây là một ví dụ mã tối thiểu:
-- create some test data
declare @t table (id int identity, name nvarchar(max))
insert @t ([name]) values ('item 1')
insert @t ([name]) values ('another item')
-- duplicate items, storing a mapping from src ID => dest ID
declare @mapping table (srcid int, [newid] int)
insert @t ([name])
output ?????, inserted.id into @mapping-- I want to use source.ID but it's unavailable here.
select [name] from @t as source
-- show results
select * from @t
select * from @mapping
kịch bản thực tế của tôi là phức tạp hơn, ví dụ như vậy tôi không thể tạo ra một cột tạm thời trên bảng dữ liệu để lưu trữ một "ID gốc" tạm thời, và Tôi không thể xác định duy nhất các mục bằng bất kỳ mục nào khác ngoài cột 'ID'.
[xấu hổ bạn không phải trên 2008] (http://stackoverflow.com/questions/5365629/using-merge-output-to -get-mapping-between-source-id-và-target-id) –