Home » Программирование » Короткие заметки » Простой способ модифицирования enum-объектов в Postrges

Простой способ модифицирования enum-объектов в Postrges

Не так давно мне понадобилось модифицировать в Postgres ранее созданный перечислимый (Enum) тип данных, который я условно назову hepdesk.

В частности, в перечислении мне нужно было изменить названия некоторых атрибутов, один удалить, и пару добавить. Как это водится, с помощью того, что описано в мануалах  по Postgres, ничего не получалось: либо не хватало каких-то прав, хотя я работал под рутом, либо возникали странные ошибки, суть которых понять мне так и не удалось.

Пересоздать этот тип заново было невозможно, так как данные типа helpdesk уже были в базе.

Тогда я решил проверить, а нельзя ли временно изменить тип данных в тех таблицах, где используется helpdesk на какой-нибудь другой, типа text или varchar, чтобы отвязать helpdesk от данных базы и, таким образом, снять запрет на пересоздание. А затем после модификации helpdesk вернуть его обратно.

И это прокатило без проблем! То есть, если в вашей базе уже есть данные, заданные каким-то перечислимым типом, который надо модифицировать, то мы просто отвязываем данные этого типа из всех таблиц, временно переводя их в совместимые стандартные типы, затем пересоздаём Enum и возвращаем типизацию обратно. Это не вызовет никаких проблем и не потребует дополнительных прав доступа.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Do NOT follow this link or you will be banned from the site!