首页 > 解决方案 > 在 PostgeSQL 中使用 ENUM 类型而不先定义它

问题描述

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

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

即,没有先定义枚举。

标签: postgresqldatabase-designpostgresql-9.6

解决方案


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

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

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

如果您不确定,请使用查找表的外键。


推荐阅读