r - RPostgres 中是否有一个函数可以为 Postgres 中的表创建/识别主键?
问题描述
我需要首先确定一个表是否有为其创建的主键,如果没有,我需要创建该主键,或者如果有则更改它。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)
解决方案
不,但这是一个可行的方法。首先删除现有的,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, ");"))
}
推荐阅读
- ruby-on-rails - CarrierWave 自定义原始文件名
- java - 如何根据 XPath 表达式返回 XML 请求的子部分
- javascript - getComputedStyle 返回意外的 CSS 值
- python - 类型错误:__init__() 缺少 1 个必需的位置参数:“模型”
- javascript - 如何添加输入字段并动态选择?
- html - 在引导主题中添加向右拉按钮
- java - 大小写类型(带返回值的开关)
- javascript - 用通配符替换 JavaScript 中的字符串的简单方法
- python-3.x - 如何在reportlab中将表格作为页脚
- javascript - 如何在点击和隐藏之间切换