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

Ale*_*lex 15 postgresql postgresql-9.2

我找到了如何增加价值TYPE.但是我怎样才能从中消除价值呢?
例如,我有TYPEenum价值观('A','B','C').怎么删除'C'

小智 32

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

DELETE FROM pg_enum
WHERE enumlabel = 'val1'
AND enumtypid = (
  SELECT oid FROM pg_type WHERE typname = 'enum_test'
)
Run Code Online (Sandbox Code Playgroud)

  • 必须意识到这可能是危险的,因为如果删除的枚举值存在于数据库中某些表中的某个位置,则删除仍然可以正常工作,但具有删除值的所有记录都会损坏。例如,任何在其结果集中具有任何此类记录的 SELECT 查询都会崩溃。 (3认同)

Cra*_*ger 12

我刚刚在另一个问题上回答了这个问题,但这并不是一个重复的问题.

请参阅:如何删除postgres中的枚举类型?


les*_*y77 9

“从 pg_enum 删除”答案有效。

然而,人们必须意识到这可能是危险的,因为如果删除的枚举值存在于数据库中的某些表中,删除仍然可以正常工作,但具有删除值的所有记录都会损坏。例如,任何在其结果集中有任何此类记录的 SELECT 查询都会崩溃。