Есть ли способ сохранить значения идентификаторов непосредственно перед вставкой, а новые значения идентификаторов сразу после вставки в таблицу сопоставления? Таблица сопоставления будет использоваться для обновления внешних ключей в других таблицах.
Первоначально я думал, что это возможно с предложением OUTPUT INTO, но только вставленные значения могут быть вставлены. Я не уверен, как использовать предложение OUTPUT само по себе, чтобы сделать работу. Может быть, какой-то подзапрос?
Возможно, это слишком сложно, и есть способ использовать SCOPE_IDENTITY и подзапросы для этого.
Любая помощь будет высоко ценится.
p.s. Да, я знаю, что могу решить эту проблему путем «резервирования» идентификаторов (вставьте фиктивные строки и затем удалите или DBCC CHECKINDENT), сохраните вновь «зарезервированные» идентификаторы и старые идентификаторы в таблицу сопоставления, обновите таблицу с новыми идентификаторами и, наконец делать вставку с включенным INSERT_IDENTITIES - но это грязно.
Это относится к SQLServer 2008R2.
Вот что не работает:
INSERT
[SomeTable]
OUTPUT
INSERTED.[Id],
[Id] -- This doesn't work
INTO
[#mappingTable]
SELECT
(SomeColumns)
FROM
[#someOtherTable];