6
我想INSERT
多堆行(使用INSERT SELECT
)和OUTPUT
所有的新舊ID變成一個「映射」表。INSERT多行和OUTPUT原始(源)值
如何獲取OUTPUT
子句中的原始 ID(或任何源值)?我沒有辦法在那裏獲得任何源代碼值。
這裏是一個最小的代碼示例:
-- 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
我的實際情況比較複雜,因此,例如我不能爲了保存一個「原始ID」臨時創建的數據表中的臨時列,我無法通過「ID」列以外的任何內容來唯一標識項目。
[羞恥你是不是在2008年(http://stackoverflow.com/questions/5365629/using-merge-output-to -get-映射源間-ID-和目標-ID) – 2012-01-14 14:25:42