Не так давно мне понадобилось модифицировать в Postgres ранее созданный перечислимый (Enum) тип данных, который я условно назову hepdesk.
В частности, в перечислении мне нужно было изменить названия некоторых атрибутов, один удалить, и пару добавить. Как это водится, с помощью того, что описано в мануалах по Postgres, ничего не получалось: либо не хватало каких-то прав, хотя я работал под рутом, либо возникали странные ошибки, суть которых понять мне так и не удалось.
Пересоздать этот тип заново было невозможно, так как данные типа helpdesk уже были в базе.
Тогда я решил проверить, а нельзя ли временно изменить тип данных в тех таблицах, где используется helpdesk на какой-нибудь другой, типа text или varchar, чтобы отвязать helpdesk от данных базы и, таким образом, снять запрет на пересоздание. А затем после модификации helpdesk вернуть его обратно.
И это прокатило без проблем! То есть, если в вашей базе уже есть данные, заданные каким-то перечислимым типом, который надо модифицировать, то мы просто отвязываем данные этого типа из всех таблиц, временно переводя их в совместимые стандартные типы, затем пересоздаём Enum и возвращаем типизацию обратно. Это не вызовет никаких проблем и не потребует дополнительных прав доступа.