我正在从另一个表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.
使用2005年的ouput条款:
DECLARE @output TABLE (id int) Insert into A (fname, lname) OUTPUT inserted.ID INTO @output SELECT fname, lname FROM B select * from @output
现在,您的表变量具有您插入的所有行的标识值.
仔细阅读您的问题,您只想根据表A中的新标识值更新表B.
插入完成后,只需运行更新...
UPDATE B SET NewID = A.ID FROM B INNER JOIN A ON (B.FName = A.Fname AND B.LName = A.LName)
这假定FName/LName组合可用于键匹配表之间的记录.如果不是这种情况,您可能需要添加额外的字段以确保记录正确匹配.
如果您没有允许您匹配记录的备用密钥,则它根本没有意义,因为表B中的记录无法彼此区分.