当前位置:  开发笔记 > 数据库 > 正文

如何插入多条记录并获取标识值?

如何解决《如何插入多条记录并获取标识值?》经验,为你挑选了2个好方法。

我正在从另一个表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.



1> Andy Irving..:

使用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

现在,您的表变量具有您插入的所有行的标识值.


但那么你如何更新表B?我的意思是,你如何将@output的每条记录与B中的记录联系起来?如果您使用fname,lname作为键,则使用njr的解决方案更简单.
@munissor,我知道这是一个老线程,但请查看[这篇简单的文章](http://www.simple-talk.com/sql/learn-sql-server/working-with-the-insert-关于这个主题的声明在-sql-server /).请查看"添加OUTPUT子句"部分.

2> njr101..:

仔细阅读您的问题,您只想根据表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中的记录无法彼此区分.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有