插入后如何获得标识列的值?

时间:2019-07-17 21:15:20

标签: r sql-server sql-server-2012 rodbc

我正在尝试使用R的RODBC库将其插入具有标识列的SQL SERVER 2012中的表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()的输出在那里……关于如何获得身份价值的任何想法?

1 个答案:

答案 0 :(得分:0)

我能够以某种肮脏的方式使它工作。我不确定这是否是唯一的方法-我不喜欢向sql server发出2条语句,因为这在并行环境中可能会有风险...但是作为一种解决方案,它确实可行: / p>

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]]