我正在尝试使用查询更新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
,但是类型存在。
请帮助我完成此操作。
屏幕:
得到答案:
ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-MONTHLY' TO 'BI_MONTHLY';
但是我还需要更改TYPE的多个值?
答案 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类型不存在”,而不是语法错误。