无法在postgres中删除单个枚举值



我有一个表my_table,其中有一列my_column,类型为my_type('value1','value2','value3'(。我想删除"value3"。我读到枚举的值不应该被删除。。。但它可以通过这样做来实现:

  • 创建新类型my_type_new
  • 修改列以便仅使用my_type_NEW
  • 删除my_type
  • my_type_NEW重命名为my_type:(

我试过了:

ALTER TABLE my_table ALTER my_column type text
CREATE TYPE my_type_new AS ENUM ('value1', 'value2')
ALTER TABLE my_table ALTER my_column type my_type_new using my_column::my_type_new 
DROP TYPE my_type;
ALTER TYPE my_type_new RENAME TO my_type

最后,"value3"仍然存在。我不明白为什么。

谢谢你的帮助。

可能该表包含value3并失败。

ALTER TABLE my_table ALTER my_column type my_type_new using my_column::my_type_new

db<gt;fidde演示

在尝试更改列之前,应执行更新

UPDATE my_table
SET my_column = NULL   -- or any other
WHERE my_column = 'value3';

db<gt;小提琴演示2

该值实际上是从枚举中删除的。intellij中的架构未正确同步/刷新。";数据库工具/忘记缓存模式";项目菜单不起作用:

双击枚举类型显示的自动生成的定义是错误的。我会尽力联系intellij的支持。

相关内容

  • 没有找到相关文章

最新更新