首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPostgres中是否有一个函数可以为Postgres中的表创建/标识主键?

RPostgres中是否有一个函数可以为Postgres中的表创建/标识主键?
EN

Stack Overflow用户
提问于 2019-02-06 01:01:01
回答 1查看 70关注 0票数 2

我需要首先确定表是否有为其创建的主键,如果没有,则需要创建该主键,如果有,则需要更改主键。RPostgres中有没有函数可以提供Postres表的主键信息,有没有一个函数可以让我创建/覆盖这个表的主键?

谢谢!

我已经使用dbSendQuery创建了主索引,但是如果已经创建了主键,那么代码就会爆炸。示例如下:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-25 23:59:16

不,但这里有一个可以用的。首先删除现有的密钥,如果是第一次创建密钥,则使用IF EXISTS来抑制错误。

代码语言:javascript
复制
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, ");"))
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54539522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档