使用 select 插入后获取 SCOPE_IDENTITY()

Getting SCOPE_IDENTITY() after insert with select

我在从插入语句获取范围标识时遇到问题。我以前做过很多次,但总是有定义的值:

INSERT INTO t_table (field1, Field2) 
VALUES (field1Val, field2Val); 
SET @id = SCOPE_IDENTITY()

当您通过 运行 a select 从另一个 table 获取插入值时,如何做到这一点?

INSERT INTO t_table (field1, Field2) 
SELECT value1, value2 FROM #tempTable; 
SET @id = SCOPE_IDENTITY()

上面运行没有错误,但是@id为null

由于您试图在此处检索多个值,因此您需要使用 OUTPUT 子句。它会将 return 所有新插入的值放入 table 或 table 变量中。

https://msdn.microsoft.com/en-us/library/ms177564.aspx