如何在 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
当使用 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