sql >> Base de Datos >  >> RDS >> PostgreSQL

Cambiar el nombre de un valor de enumeración da como resultado Relación de tipo no encontrada

Solo se admite cambiar el nombre de un valor de una enumeración a partir de Postgres 10.

Como se documenta en el manual tienes que usar rename VALUE , no rename attribute para cambiar el nombre del valor de una enumeración.

Los valores de las enumeraciones también son constantes de cadena, no identificadores. Por lo tanto, debe encerrarlos entre comillas simples, no entre comillas dobles:

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

Si se pregunta por qué aparece el error "tipo... no existe" con la sintaxis incorrecta:

Cuando usas la opción RENAME ATTRIBUTE esto indica que se debe cambiar un tipo de objeto "regular", por lo que Postgres busca un tipo de objeto "real".

Pero un "tipo de enumeración" no es un "tipo de objeto" y, por lo tanto, Postgres se queja de que "el tipo xyz no existe", en lugar de un error de sintaxis.