【发布时间】:2011-02-07 12:32:55
【问题描述】:
有没有办法存储插入之前的标识值和插入映射表之后的新标识值?映射表将用于更新其他表中的外键。
最初我认为这可以通过 OUTPUT INTO 子句实现,但只有插入的值是可插入的。我不确定如何单独使用 OUTPUT 子句来完成这项工作。也许是某种子查询?
也许这太复杂了,有一种方法可以使用 SCOPE_IDENTITY 和子查询来做到这一点。
任何帮助将不胜感激。
附言是的,我知道我可以通过“保留”身份(插入虚拟行然后删除或 DBCC CHECKINDENT)来解决这个问题,将新的“保留”身份和旧身份保存到映射表中,用新身份更新表,最后在打开 INSERT_IDENTITIES 的情况下进行插入 - 但这很混乱。
这适用于 SQLServer 2008R2。
以下是行不通的:
INSERT
[SomeTable]
OUTPUT
INSERTED.[Id],
[Id] -- This doesn't work
INTO
[#mappingTable]
SELECT
(SomeColumns)
FROM
[#someOtherTable];
【问题讨论】:
标签: sql sql-server tsql