postgres 关系中的 ALTER TYPE 错误不存在
Error on ALTER TYPE in postgres relation does not exist
使用以下内容:
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
类型。
虽然可以向此类类型添加新条目 (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 ...
您可以将 ENUM 重命名为不同的名称,然后使用更新的字段重新创建所需的 ENUM,并将 table 列的引用更改为新的 ENUM。
这里是 Fiddle - http://sqlfiddle.com/#!17/9b9ed/3
感谢https://www.munderwood.ca/index.php/2015/05/28/altering-postgresql-columns-from-one-enum-to-another/
使用以下内容:
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
类型。
虽然可以向此类类型添加新条目 (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 ...
您可以将 ENUM 重命名为不同的名称,然后使用更新的字段重新创建所需的 ENUM,并将 table 列的引用更改为新的 ENUM。
这里是 Fiddle - http://sqlfiddle.com/#!17/9b9ed/3
感谢https://www.munderwood.ca/index.php/2015/05/28/altering-postgresql-columns-from-one-enum-to-another/