postgres 关系中的 ALTER TYPE 错误不存在

2024-03-11

使用以下内容:

CREATE TYPE user_types AS ENUM ('it', 'accounting', 'processes');

CREATE TABLE my_users
(
    my_user_id integer NOT NULL,
    my_user_name text NOT NULL,
    my_user_type user_types
)

我想更改其中一种用户类型:

ALTER TYPE user_types RENAME ATTRIBUTE it TO softwaredev CASCADE;

我收到一个错误:

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

我尝试添加引号和反引号,但这没有帮助。我在这里写下的示例不是确切的代码,我的类型有 31 个字符,但我不认为我的类型的长度是问题。

我使用的是 postgres 版本 9.6.2


ALTER TYPE ... RENAME ATTRIBUTE仅适用于复合类型,不适用于ENUM types.

虽然有一种方法可以向这种类型添加新条目(ALTER TYPE ... ADD VALUE 'new_value'),不支持删除或重命名枚举条目的方法。

如果您不怕弄乱目录,可以尝试以超级用户身份:

UPDATE pg_enum
SET enumlabel = 'softwaredev'
WHERE enumtypid = 'user_types'::regtype
  AND enumlabel = 'it';

从 PostgreSQL v10 开始,您可以使用

ALTER TYPE ... RENAME VALUE ... TO ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgres 关系中的 ALTER TYPE 错误不存在 的相关文章

随机推荐