Это не кажется слишком сложным:
- Убедитесь, что все ограничения внешнего ключа определены как
ON UPDATE CASCADE
(поэтому, когда вы обновляете значение ключа, обновляются и детские fks)
- Обновить каждое значение целым числом (но, конечно, текстом)
ALTER TABLE my_table my_id_column INT AUTO_INCREMENT
Как вы выбрали новое целочисленное значение из ключа, зависит от вас. Возможно, просто используя этот простой запрос, чтобы пронумеровать их от 1 до указанного порядка:
set @i:=0;
update my_table set
my_id_column = (@i := @i + 1)
order by some_ordering_column;
К вашему сведению, я только что проверил весь код здесь, и он работает.