如何在 R 中使用 RPostgreSQL 在 INSERT 语句中获取自动生成的键

How can I get the auto-generated keys in an INSERT statement using RPostgreSQL in R

当使用 PostgreSQL 的 R 数据库接口时,我找不到在 INSERT 语句后获取自动生成的键的方法 (RPostgreSQL)。

有没有办法像 JDBC 那样做到这一点?

https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getGeneratedKeys%28%29

最终,我利用了 PostgreSQL-specific SQL 扩展,INSERT 语句的 RETURNING 子句,returns 生成的主键( s) 在执行 INSERT 语句之后。还需要欺骗 DBI 来处理 INSERT 查询,就好像它是 SELECT 查询一样,以访问返回值,即生成的键。

假设我们在数据库中有以下 table:USERS(id, name),其中 id 是 auto-generated 主键。以下示例 R 代码片段说明了从数据库中获取生成的密钥并将其分配给 R 对象的概念:

query <- sprintf(
  "INSERT INTO users (name) VALUES ('%s') RETURNING id",
  users$name
)

dbres = dbGetQuery(conn, query)
users$id = dbres$id