当前位置: 首页 > 知识库问答 >
问题:

将postgres表主键UUID更改为字符变量

苏运良
2023-03-14

我想转换我的PostgreSQL表主键UUID字符变化

ALTER TABLE payment_authorization ALTER COLUMN id TYPE VARCHAR;

当我运行上面显示以下错误的命令时,Beacause外键约束失败。在我的系统中有200张桌子。有没有简单的方法来更改所有表的主键?

共有1个答案

蔺山
2023-03-14

更换所有的桌子可能会很慢,也很麻烦。

最简单的解决方案可能是:

>

  • 导出数据库

    pg_dump -F p -f dumpfile.sql dbname
    

    使用编辑器将转储中的uuid替换为text

    sed --in-place -e 's/uuid/text/g' dumpfile.sql
    

    删除并重新创建数据库:

    DROP DATABASE dbname;
    CREATE DATABASE dbname;
    

    导入转储:

    psql -U postgres -d dbname -1 -f dumpfile.sql
    

  •  类似资料:
    • 问题内容: 我试图将我的SQL数据库中表的主键从现有键更改为复合键,其中不包括现有列。由于出现以下错误消息,因此以下代码无法正常工作: 删除主键: PRIMARY附近的语法不正确。预期为COLUMN,CONSTRAINT,ID或QUOTED_ID 添加主键: PRIMARY附近的语法不正确。 期望ID T-SQL代码: 编辑 我可以通过使用以下两个查询语句来完成此操作 我没有要求SQL“ DROP

    • 问题内容: 兼职勉强的DBA在这里。我想将现有的主键索引从群集更改为非群集。语法在逃避我。 这就是现在的脚本编写方式。 我在在线文档中没有看到ALTER CONSTRAINT语句。 问题答案: 删除聚集索引,然后将主键重新创建为非聚集键:

    • 我刚到Spring 我尝试使用spring rest api和Hibernate更新Mysql中的一个现有值。但它每次都会抛出一个错误。 错误消息:

    • 问题内容: 我收到的时候我想改变我的以下异常中的。 我知道我要更改表中的主键。我正在使用JPA注释。 我通过使用以下单个HQL查询解决了此问题: 而不是使用更多的OO方法: 知道差异是什么吗? 问题答案: 我无法想象你为什么要这么做。完全没有 您为什么要更改实体的身份?您还需要更新指向它的其他表中的所有外键。似乎很痛苦,没有收获。您最好将其设置为“业务密钥”(普通属性),并使用更永久的代理密钥。我

    • 我的PostgreSQL数据库中有表,有两列:和。是主键,只是另一个具有唯一约束的整数列。 还有其他按主键引用用户的表。 下面是表说明: 以下是说明: 如何将PostgreSQL表中的主键从列替换为列,并保持数据完整性?

    • 在这里,是主列键中的第三列。我想要做到这一点的唯一方法是将主复合键更改为。我找不到任何文档告诉我如何做到这一点。有可能吗? 或者,我是否错过了解决这个问题的“正确”方法/我是否曲解了这个问题?