Изменение типа столбца с зависимостями в БД
В нашем новомодном стартапе было принято решение перехода на uuid с хранением в строке. В базе надо было перевести в таблице тип данных столбца id с bigint на text. Но оказалось, таблицы, которые ссылаются на этот столбец, не дают этого сделать, мол мы ссылаемся на int, а не на text.Пришлось вместо миграции в 1 строчку изменения типа писать здоровую с удалением этих зависимых таблиц, только потем изменением типа, а потом заново с заведением "новых" отредактированных таблиц. Может есть какой-то более элегантный способ делать такие штуки?
Ответы (1 шт):
Самый простой способ, который могу предложить, если в таблицах уже есть данные, которые не хочется терять.
Создать в таблице, в которой хотим сменить тип ключа, ещё один ключ типа uuid (старые пока не удаляем) . И соответственно добавит foreign key, которые будут ссылаться уже на него. Затем старые foreign key и primary key удаляй (именно в таком порядке).
Но для перепривязки ключей надо конечно будет маленький скрипт написать. Полностью таблицы в таком случае можно не удалять