我们在表中有一个VARCHAR列,我们需要升级到枚举类型。
在VARCHAR列的所有值都在枚举有效值。 有在VARCHAR列没有空值。
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
错误:列“varcharColumn”不能转换为类型enum_type SQL状态:42804
有关办法圆是
- 创建枚举类型另一个新列。
- 更新类型转换后的VARCHAR列枚举类型列。
- 删除VARCHAR列。
- 重命名枚举类型列名varchar列名。
有没有更好的方式来实现这一目标?
提前致谢。
您需要定义一个投地使用,因为没有可用的默认演员。
如果所有的值varcharColumn
遵守枚举定义,下面应该工作:
alter table foo
ALTER COLUMN varcharColumn TYPE enum_type using varcharColumn::enum_type;
我个人不喜欢枚举,因为他们是相当不易伸缩。 我喜欢上一个VARCHAR列检查约束,如果我想在一列限制值。 或者 - 如果值列表经常改变,并有继续增长 - 很老的“查找表”与外键约束。
得到它了。
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
USING varcharColumn::enum_type
将成功更新。