重命名枚举值将导致“找不到类型关系”

时间:2018-08-27 13:09:23

标签: sql postgresql

我正在尝试使用查询更新TYPE:

ALTER TYPE public.enum_subscription_sub_frequency RENAME ATTRIBUTE "BI-WEEKLY" TO "BI_WEEKLY";

但是它给我错误ERROR: relation "public.enum_subscription_sub_frequency" does not exist,但是类型存在。

freq

请帮助我完成此操作。

屏幕:

c

ss

得到答案:

ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-MONTHLY' TO 'BI_MONTHLY';

但是我还需要更改TYPE的多个值?

1 个答案:

答案 0 :(得分:0)

仅从Postgres 10开始才支持重命名枚举值。


As documented in the manual,您必须使用rename VALUE而不是rename attribute重命名枚举的值。

枚举值也是字符串常量,而不是标识符。因此,您需要将它们用单引号引起来,而不是将双引号引起来:

ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-WEEKLY' TO 'BI_WEEKLY';

如果您想知道为什么使用错误的语法出现“类型...不存在”错误:

使用选项RENAME ATTRIBUTE时,这表明应更改“常规”对象类型,因此Postgres将寻找“真实”对象类型。

但是“枚举类型”不是“对象类型”,因此Postgres抱怨“ xyz类型不存在”,而不是语法错误。