我从另一个表B插入多个记录到表A中。有没有办法获得表A的记录的标识值并更新表b的记录而不用做光标?如何插入多个记录并获取标识值?
Create Table A
(id int identity,
Fname nvarchar(50),
Lname nvarchar(50))
Create Table B
(Fname nvarchar(50),
Lname nvarchar(50),
NewId int)
Insert into A(fname, lname)
SELECT fname, lname
FROM B
我使用MS SQL Server 2005的
我意识到这是一个老问题,它指定了SQL Server 2005,但是它是第一个显示2008年可用的MERGE语句的结果,以后应该提及那些寻求解决方案的人。 并入 TargetTable USING ( SELECT .... )AS源开 1 = 2 WHEN NOT然后再配 INSERT .... OUTPUT inserted.ID INTO 不是Temptable ( InsertedID ) – oldegreyg 2017-04-12 17:54:09
你不需要一个简单的插入合并。合并对于插入/更新是很好的,但对于简单的插入来说是过度的。安迪的输出答案为我工作,并帮助拿走索引锁。 – CodeMonkeyForHire 2017-04-13 14:23:46
安迪欧文的答案是最好的。触发器很笨拙,不适用于目标表上的任意操作,尤其是在目标是临时目录或中间目标时。 Darren的回答是错误的,如果你插入一组行,它们在目标表中的顺序不一定与你的顺序相同。德米特里的方式是不好的,因为它需要一个循环周围插入一行,这是一个慢性能明智的,总是使用集时,你可以。科里的方式很糟糕,他解释了为什么,“只要他们不冲突。”这将打开到星期六晚上c – clemahieu 2008-12-13 08:02:45