我有一个表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的支持。