解決方法如下:
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