当使用PostgreSQL的R数据库接口(RPostgreSQL
)时,在INSERT语句之后我无法找到获取自动生成的密钥的方法。
有没有一种方法可以像在JDBC中那样?
https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getGeneratedKeys%28%29
答案 0 :(得分:1)
最终,我利用了PostgreSQL特定的SQL扩展,即RETURNING
语句的INSERT
子句,该子句在执行INSERT
语句后返回生成的主键。还必须欺骗DBI
来处理INSERT
查询,就好像它是一个SELECT
查询一样,以访问返回的值,即生成的键。
假设我们在数据库中有下表:USERS(id, name)
,其中id
是自动生成的主键。以下示例R代码段说明了从数据库获取生成的密钥并将其分配给R对象的概念:
query <- sprintf(
"INSERT INTO users (name) VALUES ('%s') RETURNING id",
users$name
)
dbres = dbGetQuery(conn, query)
users$id = dbres$id