Я бы хотел INSERT
несколько строк (используя INSERT SELECT
) и OUTPUT
все новые и старые идентификаторы в таблицу "отображения".
Как я могу получить оригинальный идентификатор (или любые исходные значения) в предложении OUTPUT
?Я не вижу способа получить какие-либо исходные значения там.
Вот минимальный пример кода:
-- 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».