我们在表中有一个varchar列,我们需要升级到枚举类型。在postgresql中将varchar列升级为枚举类型
varchar列中的所有值都是枚举中的有效值。 varchar列中没有空值。
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
错误:列 “varcharColumn” 不能转换为enum_type SQL状态类型:42804
大约方式的轮是
- 创建枚举类型另一个新列。
- 在类型转换之后使用varchar列更新枚举类型列。
- 删除varchar列。
- 将枚举类型列名重命名为varchar列名。
有没有更好的方法来实现这一目标?
在此先感谢。
当使用某些客户端应用程序而不是查找表或简单的约束列时,枚举也会产生更多问题。因为任何在JPA/Hibernate中使用枚举的可疑人员都知道。 – 2013-03-27 11:12:49
谢谢a_horse_with_no_name!尽管我从文档中找到了解决方案,但您的解释非常全面和有用。 – Gopal 2013-03-27 11:34:25
我最近需要通过将枚举移动到模式来重新组织枚举,这对他们来说更有意义。因此,依赖枚举的表需要将其类型“更改”为指向枚举的新位置。我做了如下,双重演员:'alter table my_schema.my_column改变列sale_item_status类型my_schema.my_column_enum 使用((my_column :: text):: my_schema.my_column_enum) - HTH任何其他人与枚举“问题“ – 2013-10-24 23:21:49