r - 插入后如何获取标识列的值?
问题描述
我正在尝试使用 R 的RODBC
库插入到tbl
SQL SERVER 2012 中具有标识列的表中。我按如下方式插入:
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 server 发出 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]]
推荐阅读
- plsql - 将函数调用作为参数传递给插入语句 - 可能的问题
- mysql - Magento 2:如何允许更新具有外键约束的列的空值?
- prometheus - 将字符串附加到grafana查询中的变量?
- c# - 鼠标与孩子一起留在面板上
- hive - -- 不支持配置单元导入的增量 lastmodified 选项
- sql-server - 如何根据 SQL Server 2017 中的最后日期创建一行
- java - 我可以在不使用本机查询的情况下在 JPA 中创建此查询吗?
- reactjs - 如何避免使用useRef在react中重新渲染?
- c# - 用户登录 Office365 时 Excel 互操作不再工作
- mobile - 移动地理定位到地铁