如何在 INSERT 之后获取标识列的值?

How do I get the identity column's value after INSERT?

我正在尝试使用 R 的 RODBC 库插入到 SQL SERVER 2012 中的 table tbl 中,其中有一个标识列。我按如下方式插入:

INSERT INTO tbl(col1, col2, col3)
VALUES (1, 2, 3)

然后我想获取标识列的值。我知道我需要做 SELECT SCOPE_IDENTITY() 但我不知道如何进行。这是我尝试过的:

library(RODBC)
query.str <- "
              INSERT INTO tbl(col1, col2, col3)
              VALUES (1, 2, 3);
              SELECT SCOPE_IDENTITY();
             "
some.return <- sqlQuery(dbcon, query.str)

some.return 没有任何价值。我希望 SCOPE_IDENTITY() 的输出会在那里...关于如何获得标识值的任何想法?

我能够以一种有点肮脏的方式让它工作。我不确定这是否是执行此操作的唯一方法 - 我不喜欢向 sql 服务器发出 2 条语句,因为这在并行环境中可能存在风险......但作为一种解决方案,这似乎确实如此上班:

library(RODBC)

#semicolon at the end of the sql seems significant
query.str <- "
              INSERT INTO tbl(col1, col2, col3)
              VALUES (1, 2, 3);
             "
output <- sqlQuery(dbcon, query.str)
if (is.character(output) && length(output) > 0)
  stop(paste("SQL ERROR: ", output))

reg.id <- sqlQuery(dbcon, "SELECT SCOPE_IDENTITY()")
if (is.character(reg.id) && length(reg.id) > 0)
  stop(paste("SQL ERROR: ", reg.id))

reg.id[[1]]