La ridenominazione di un valore di un enum è supportata solo a partire da Postgres 10.
Come documentato nel manuale devi usare rename VALUE
, non rename attribute
per rinominare il valore di un enum.
I valori Enums sono anche costanti di stringa, non identificatori. Pertanto è necessario racchiuderli tra virgolette singole, non virgolette doppie:
ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-WEEKLY' TO 'BI_WEEKLY';
Se ti chiedi perché ricevi un errore "tipo... non esiste" con la sintassi sbagliata:
Quando utilizzi l'opzione RENAME ATTRIBUTE
questo indica che un tipo di oggetto "normale" dovrebbe essere modificato, quindi Postgres cerca un tipo di oggetto "reale".
Ma un "tipo enum" non è un "tipo di oggetto" e quindi Postgres si lamenta del "tipo xyz non esiste", piuttosto che di un errore di sintassi.