Изменение первичного ключа в ссылочной таблице - PullRequest
0 голосов
/ 09 июня 2011

Я хотел бы знать, существует ли «простой» способ изменения первичного ключа, который представляет собой UUID из 36 символов для столбца автоинкремента.Проблема в том, что на эту таблицу ссылаются как минимум еще 25 таблиц (около 50 столбцов)

Я использую InnoDB и ограничения внешнего ключа.

1 Ответ

2 голосов
/ 09 июня 2011

Это не кажется слишком сложным:

  1. Убедитесь, что все ограничения внешнего ключа определены как ON UPDATE CASCADE (поэтому, когда вы обновляете значение ключа, обновляются и детские fks)
  2. Обновить каждое значение целым числом (но, конечно, текстом)
  3. 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;

К вашему сведению, я только что проверил весь код здесь, и он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...