PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

La ridenominazione di un valore enum comporta la relazione di tipo non trovata

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.