SQLServer如何在批量插入後,獲取批量插入的自增列的值
阿新 • • 發佈:2018-12-19
解決方法如下:
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
執行結果如下: