Переименование значения enum приводит к «Типу Не найдено» - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь обновить TYPE с запросом:

ALTER TYPE public.enum_subscription_sub_frequency RENAME ATTRIBUTE "BI-WEEKLY" TO "BI_WEEKLY";

Но это дает мне ошибку ERROR: relation "public.enum_subscription_sub_frequency" does not exist, но тип существует.

freq

Вид Помогите мне завершить это.

Экран:

c

ss

Получил ответ:

ALTER TYPE public.enum_subscription_sub_frequency RENAME VALUE 'BI-MONTHLY' TO 'BI_MONTHLY';

но мне также нужно изменить несколько значений типа?

1 Ответ

0 голосов
/ 27 августа 2018

Переименование значения перечисления поддерживается только начиная с Postgres 10.


Как указано в руководстве , вы должны использовать rename VALUE, а не rename attribute для переименования значения перечисления.

Перечисляемые значения также являются строковыми константами, а не идентификаторами. Поэтому вам необходимо заключать их в одинарные, а не в двойные кавычки:

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

Если вам интересно, почему вы получаете сообщение об ошибке «тип ... не существует» с неправильным синтаксисом:

Когда вы используете опцию RENAME ATTRIBUTE, это означает, что «обычный» тип объекта должен быть изменен, поэтому Postgres ищет «настоящий» тип объекта.

Но «тип enum» не является «типом объекта», и поэтому Postgres жалуется на «тип xyz не существует», а не на синтаксическую ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...