Изменение типа столбца с зависимостями в БД

В нашем новомодном стартапе было принято решение перехода на uuid с хранением в строке. В базе надо было перевести в таблице тип данных столбца id с bigint на text. Но оказалось, таблицы, которые ссылаются на этот столбец, не дают этого сделать, мол мы ссылаемся на int, а не на text.Пришлось вместо миграции в 1 строчку изменения типа писать здоровую с удалением этих зависимых таблиц, только потем изменением типа, а потом заново с заведением "новых" отредактированных таблиц. Может есть какой-то более элегантный способ делать такие штуки?


Ответы (1 шт):

Автор решения: Кирилл Сыроежкин

Самый простой способ, который могу предложить, если в таблицах уже есть данные, которые не хочется терять.

Создать в таблице, в которой хотим сменить тип ключа, ещё один ключ типа uuid (старые пока не удаляем) . И соответственно добавит foreign key, которые будут ссылаться уже на него. Затем старые foreign key и primary key удаляй (именно в таком порядке).

Но для перепривязки ключей надо конечно будет маленький скрипт написать. Полностью таблицы в таком случае можно не удалять

→ Ссылка