批量插入记录并检索无游标的标识值
向表中插入多条记录是数据库编程中的常见任务。特别是当将数据从一个表复制到另一个表时,希望获得为新记录生成的标识值。在这方面,Microsoft SQL Server 2005 提供了使用 OUTPUT 子句的有效解决方案。
考虑到提供的代码片段,其中数据从表 B 插入到表 A:
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
To检索表 A 中新插入记录的标识值,我们可以采用以下技术:
使用OUTPUT 子句
OUTPUT 子句允许我们检索在插入、更新或删除操作期间生成的值。在这种情况下,我们可以使用它来捕获插入行的标识值。
DECLARE @output TABLE (id int) Insert into A (fname, lname) OUTPUT inserted.ID INTO @output SELECT fname, lname FROM B
通过创建表变量(@output)并指定 OUTPUT insert.ID 表达式,我们指示查询将插入记录的标识值返回到@output。
查询表变量
插入操作完成后,我们可以查询@output表变量来获取标识值:
select * from @output
这将显示一个只有一列(id )包含新插入记录的标识值。如果需要,这些值可以用于更新表 B 中的相应记录。
以上是在没有游标的SQL Server中批量插入记录后如何检索标识值?的详细内容。更多信息请关注PHP中文网其他相关文章!