PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Renommer une valeur enum donne Type Relation Not found

Renommer une valeur d'énumération n'est pris en charge qu'à partir de Postgres 10.

Comme documenté dans le manuel vous devez utiliser rename VALUE , pas rename attribute pour renommer la valeur d'une énumération.

Les valeurs d'énumération sont également des constantes de chaîne, pas des identificateurs. Par conséquent, vous devez les placer entre guillemets simples et non entre guillemets :

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

Si vous vous demandez pourquoi vous obtenez une erreur "type ... n'existe pas" avec la mauvaise syntaxe :

Lorsque vous utilisez l'option RENAME ATTRIBUTE cela indique qu'un type d'objet "normal" doit être modifié, donc Postgres recherche un type d'objet "réel".

Mais un "type enum" n'est pas un "type d'objet" et donc Postgres se plaint du "type xyz n'existe pas", plutôt que d'une erreur de syntaxe.