我需要首先确定表是否有为其创建的主键,如果没有,则需要创建该主键,如果有,则需要更改它。 RPostgres 中是否有函数可以提供 Postres 中表的主键信息,并且是否有函数可以允许我创建/覆盖所述表的主键?
谢谢!
我已经使用 dbSendQuery 通过 SQL 创建主索引,但是如果主键已经创建,那么代码就会崩溃。下面的例子:
keys_create_tbl <- dbplyr::build_sql(
"ALTER TABLE ", dplyr::sql(table_name),
" ADD CONSTRAINT ", dplyr::sql(paste0(table_name,"_keys"))," PRIMARY KEY (",dplyr::sql(primary_keys),");
")
# Send the query to Postgres
RPostgres::dbSendQuery(pg_conn, keys_create_tbl)
最佳答案
不,但这里有一个可行的方法。如果您是第一次创建 key ,请先删除现有 key ,然后使用 IF EXISTS
来抑制错误。
create_primary_key <- function(conn, tableName, colName) {
dbSendQuery(conn,
paste0("ALTER TABLE ", tableName,
" DROP CONSTRAINT IF EXISTS ",tableName, "_pkey;"))
dbSendQuery(conn,
paste0("ALTER TABLE ", tableName,
" ADD PRIMARY KEY (",colName, ");"))
}
关于r - RPostgres 中是否有一个函数可以为 Postgres 中的表创建/标识主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54539522/