使用 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 变量中。
我在从插入语句获取范围标识时遇到问题。我以前做过很多次,但总是有定义的值:
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 变量中。