如何在postgres中删除枚举类型值?

如何删除在postgresql中创建的枚举类型值

将类型admin_level1创建为enum('classifier'、'mediator'、'god');

例如,我想从列表中删除主持人

我似乎在文件上找不到任何东西

我正在使用Postgresql 9.3.4

您可以像任何其他类型一样删除(删除)枚举类型,使用drop type

下拉式管理级别1;

您是否真的在询问如何从枚举类型中删除单个值?如果是的话,你不能。它不受支持:

虽然enum类型主要用于静态值集,但支持向现有enum类型添加新值,以及重命名值(请参见ALTER type)。不能从枚举类型中删除现有值,也不能更改此类值的排序顺序,除非删除并重新创建枚举类型

必须创建不带值的新类型,将旧类型的所有现有用途转换为使用新类型,然后删除旧类型

例如

将类型admin_level1创建为枚举(“分类器”、“主持人”);
创建表格废话(
用户id整数主键,
电源管理\u级别1不为空
);
插入blah(用户id、权限)值(1,‘主持人’,(10,‘分类器’);
ALTER TYPE admin_level1增加值“god”;
插入blah(用户id,电源)值(42,‘上帝’);
-- .... 哎呀,也许这是个坏主意
创建类型admin_level1_new作为ENUM('分类器','主持人');
--删除与新定义不兼容的值
--您不必删除,您可以改为更新
删除权力=‘上帝’的空话;
--转换为新类型,通过文本表示进行强制转换
更改表格
更改列电源类型管理\u级别1\u新建
使用(power::text::admin\u level1\u new);
--并交换类型
下拉式管理1级;
将类型admin_level1更改为admin_level1;

发表评论