如何在 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]]
我正在尝试使用 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]]