SQLServer如何在批量插入后,获取批量插入的自增列的值
解决方法如下:
Use the OUTPUT functionality to grab all the INSERTED Id back into a table.
使用output 功能获取所有插入的id,然后插入一个表中
注:如果不想用批量插入id做关联的其他业务逻辑,而只是简单的返回给前台,那么可以直接使用output功能返回这些id,不需要插入表。
DECLARE @tmpTable TABLE ( Iden INT IDENTITY(1,1), ColumnName VARCHAR(100) ) INSERT INTO @tmpTable(ColumnName) OUTPUT INSERTED.Iden SELECT TOP 10 sysobjects.name FROM sysobjects SELECT * FROM @tmpTable
如果想收集插入的所有id,那么可以把output的数据插入到一个表变量中,如下代码:
DECLARE @tmpTable TABLE ( Iden INT IDENTITY(1,1), ColumnName VARCHAR(100) ) DECLARE @batchInsertedIds TABLE ( ID INT ) INSERT INTO @tmpTable(ColumnName) OUTPUT INSERTED.Iden INTO @batchInsertedIds(ID) SELECT TOP 10 sysobjects.name FROM sysobjects SELECT * FROM @batchInsertedIds SELECT * FROM @tmpTable