【发布时间】:2018-10-18 06:18:53
【问题描述】:
我想通过添加一个新的枚举值来扩展我的枚举类型。这很简单。我还将所有 SQL 保留在迁移中,并将每个向上迁移与对称向下迁移配对,将架构恢复到以前的状态。
然而,反向操作——从枚举中删除一个变体——is not supported。
这方面的常用方法是什么?我可以看到两个选项:
- 使用
if not exists子句编写“向上”迁移,在“向下”迁移中什么也不做。我不喜欢这个选项,因为它违反了这样一个假设,即应用和恢复迁移会使架构保持与以前相同的状态。 - 在“向下”迁移中转换为新的枚举类型,如上面链接的问题中所述 - 对于这样一个简单的操作来说似乎有点过头了。
【问题讨论】:
-
另一个很好的例子,说明枚举通常不是一个好主意。如果您使用带有外键的标准查找表,这将非常容易。删除值就像运行
DELETE语句一样简单 -
在这个问题的上下文中,“迁移”是一个技术术语,还是您用来描述一个对您有意义但对我没有意义的过程的词?
-
@eurotrash en.wikipedia.org/wiki/Schema_migration
-
@a_horse_with_no_name 好点。但是,目前我认为具有恒定数量的变体的枚举可以一对一映射到应用程序语言中的枚举变体,比外键更适合我的需求
标签: postgresql enums database-migration