在我们新奇的启动中,我们决定切换到使用字符串存储的 uuid。数据库中需要将表中id列的数据类型从bigint转换为text。但事实证明,引用该列的表不允许我们这样做,他们说我们引用的是 int,而不是 text。我不得不编写一个健康的行,而不是迁移到类型更改的 1 行删除这些依赖表,然后更改类型,然后再次建立“新”编辑表。有没有更优雅的方法来做这种事情?
在我们新奇的启动中,我们决定切换到使用字符串存储的 uuid。数据库中需要将表中id列的数据类型从bigint转换为text。但事实证明,引用该列的表不允许我们这样做,他们说我们引用的是 int,而不是 text。我不得不编写一个健康的行,而不是迁移到类型更改的 1 行删除这些依赖表,然后更改类型,然后再次建立“新”编辑表。有没有更优雅的方法来做这种事情?
我建议的最简单的方法是,如果表中已经有您不想丢失的数据。
在我们想要更改键类型的表中创建另一个 uuid 类型的键(我们还不删除旧的键)。因此它会添加一个外键来引用它。然后删除旧的外键和主键(按顺序)。
但要重新绑定按键,当然,您需要编写一个小脚本。在这种情况下,您不必完全删除表。