Преименуването на стойност на enum се поддържа само от Postgres 10.
Както е документирано в ръководството трябва да използвате rename VALUE
, а не rename attribute
за преименуване на стойността на enum.
Enums стойностите също са низови константи, а не идентификатори. Следователно трябва да ги оградите в единични, а не в двойни кавички:
ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-WEEKLY' TO 'BI_WEEKLY';
Ако се чудите защо получавате грешка „тип ... не съществува“ с грешен синтаксис:
Когато използвате опцията RENAME ATTRIBUTE
това показва, че "обикновен" тип обект трябва да бъде променен, така че Postgres търси "истински" тип обект.
Но „enum тип“ не е „обектен тип“ и следователно Postgres се оплаква от „тип xyz не съществува“, а не от синтактична грешка.