如何在PostgreSQL中更改类型和删除值

29

我找到了如何将值添加到TYPE中。但是我该如何从其中删除值?
例如,我有一个具有enum('A','B','C')TYPE。如何删除'C'


如果你需要这样做,那么 enum 很可能在第一次选择时就是错误的选择。使用第二个表和两个表之间的外键。 - user330315
1个回答

61

要从枚举('enum_test')中删除值('val1'),您可以使用:

DELETE FROM pg_enum
WHERE enumlabel = 'val1'
AND enumtypid = (
  SELECT oid FROM pg_type WHERE typname = 'enum_test'
)

非常整洁简短,因此出错率大大降低。非常感谢! - cgte
3
必须意识到这可能是危险的,因为如果在数据库中的某些表中存在已删除的枚举值,则删除仍然可以正常工作而不会抱怨,但所有具有已删除值的记录都将变得损坏。例如,任何具有任何此类记录的SELECT查询都会崩溃。 - leszy77

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接