在 Postgres 中,如何将不同的字符转换为枚举类型?

Rob*_*Rob 8 postgresql cast

我有一个 Postgres 8.4 表,其中包含类型为“字符变化”的列,但我想将它们转换为枚举类型。

尝试更改表格时

ALTER TABLE logs ALTER COLUMN interface_type TYPE interface_types
USING interface_type::text::interface_types;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

default for column "interface_type" cannot be cast to type interface_types
Run Code Online (Sandbox Code Playgroud)

该列的默认值是枚举类型中值的文本版本。所以这应该是可能的,尽管我没有运气谷歌搜索解决方案。

我假设我需要为它定义一个演员表。如何?

Rob*_*Rob 7

我想我找到了答案:我需要先删除默认值,然后重新添加它。

ALTER TABLE logs ALTER COLUMN interface_type DROP DEFAULT;
ALTER TABLE logs ALTER COLUMN interface_type TYPE interface_types
  USING interface_type::text::interface_types;
ALTER TABLE logs ALTER COLUMN interface_type SET DEFAULT 'button';
Run Code Online (Sandbox Code Playgroud)