我将表的子集插入到同一个表中,并且为了在某些映射表中创建记录,需要捕获新创建的身份 PK 和匹配的旧 PK..
如果 SQL 支持它,例如:
Create table Test (pk identity, description varchar(10))
Declare @PKVALUES TABLE (NewPK int, OLdPk int)
INSERT INTO Test (description)
OUTPUT INSERTED.PK, Test.PK into @PKVALUES
Select description
From Test
Where ...
但是,当然,SQL 不支持在 INSERT 操作期间从 FROM 表中输出值。
我遇到的唯一基于集合的替代方法需要锁定整个表,同时在临时表中创建新的 PK,然后使用身份插入将它们插入到测试表中。
有什么方法可以做到这一点(不必一次使用一条记录或锁定整个表)?
谢谢,伊尔玛