加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在PostgreSQL中重命名枚举项

发布时间:2020-12-13 16:38:57 所属栏目:百科 来源:网络整理
导读:我想在PostgreSQL 9.1.5中更改枚举类型中的项目的名称。 这是类型的创建stmt: CREATE TYPE import_action AS ENUM('Ignored','Inserted','Updated','Task created'); 我只是想将“任务创建”改为“中止”。似乎从documentation,以下应该工作: ALTER TYPE
我想在PostgreSQL 9.1.5中更改枚举类型中的项目的名称。

这是类型的创建stmt:

CREATE TYPE import_action AS ENUM
('Ignored','Inserted','Updated','Task created');

我只是想将“任务创建”改为“中止”。似乎从documentation,以下应该工作:

ALTER TYPE import_action
RENAME ATTRIBUTE "Task created" TO "Aborted";

但是,我得到一个msg:

********** Error **********

ERROR: relation "import_action" does not exist
SQL state: 42P01

但是,它确实存在。

该类型当前被多个表使用。

我正在想,不能有办法做到这一点。我已经尝试了pgAdminIII中的类型的对话框,但是没有办法可以在那里重命名它。 (所以,强烈的提示,我无法做到这一点,或者 – 我希望 – 一个小的监督是开发者创建的对话)

如果我不能在一个档案中做到这一点那我该怎么办?我必须写一个脚本来添加项目,将所有的记录更新为新的值,然后删除旧的项目?愿意甚至工作吗?

看来这应该是一件简单的事情。据了解,记录只是存储对类型和项目的引用。我不认为他们实际上存储了我给出的文本值。但是,也许我也错了。

枚举值的名称称为标签,属性完全不同。

不幸的是,更改枚举标签并不简单,您必须使用系统目录:
http://www.postgresql.org/docs/9.1/static/catalog-pg-enum.html

UPDATE pg_enum SET enumlabel = 'Aborted' 
WHERE enumlabel = 'Task created' AND enumtypid = (
  SELECT oid FROM pg_type WHERE typname = 'import_action'
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读