我需要首先确定表是否有为其创建的主键,如果没有,则需要创建该主键,如果有,则需要更改主键。RPostgres中有没有函数可以提供Postres表的主键信息,有没有一个函数可以让我创建/覆盖这个表的主键?
谢谢!
我已经使用dbSendQuery创建了主索引,但是如果已经创建了主键,那么代码就会爆炸。示例如下:
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)发布于 2021-06-25 23:59:16
不,但这里有一个可以用的。首先删除现有的密钥,如果是第一次创建密钥,则使用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, ");"))
}https://stackoverflow.com/questions/54539522
复制相似问题