在 PostgreSQL 中使用 ENUM 类型而不先定义它

Using an ENUM type in PostgeSQL without defining it first

通常,要在PostgreSQL 中向现有的table 添加枚举类型的列,我们需要先使用CREATE TYPE 语句创建它。我想知道是否有一种方法可以像这样或多或少地做同样的事情:

ALTER TABLE tbl ADD COLUMN new_col ENUM('foo','bar');

即,没有先定义枚举。

你不能使用那样的快捷方式。

小心枚举类型。它们很好,但只有当您可以 100% 确定标签永远不会改变时,它们才是好的。例如,世界各国的枚举是个坏主意。

枚举的主要缺点是您永远无法删除标签。这是因为这样做意味着更新所有使用该类型的 table。

如果您不确定,请使用外键进行查找 table。