Gop*_*pal 18 sql database postgresql ddl
我们在表中有一个varchar列,我们需要升级到枚举类型.
varchar列中的所有值都是枚举中的有效值.varchar列中没有空值.
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
Run Code Online (Sandbox Code Playgroud)
错误:列"varcharColumn"无法强制转换为类型enum_type SQL状态:42804
关于方式的回合是
有没有更好的方法来实现这一目标?
提前致谢.
a_h*_*ame 35
您需要定义要使用的强制转换,因为没有可用的默认强制转换.
如果varcharColumn符合枚举定义的所有值,则以下内容应该有效:
alter table foo
ALTER COLUMN varcharColumn TYPE enum_type using varcharColumn::enum_type;
Run Code Online (Sandbox Code Playgroud)
我个人不喜欢枚举,因为它们非常不灵活.如果我想限制列中的值,我更喜欢varchar列上的检查约束.或者 - 如果值列表经常变化并且将会增长 - 一个带有外键约束的旧的"查找表".
知道了。
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
USING varcharColumn::enum_type
Run Code Online (Sandbox Code Playgroud)
将成功更新它。