MySQL: изменение идентификаторов первичных ключей - PullRequest
1 голос
/ 28 февраля 2011

Мне нужно объединить параллельные таблицы из 2 разных схем.Они практически одинаковы (некоторые поля разные), но идентификаторы (их PK) разные.

Мне нужно согласовать одну таблицу, чтобы она содержала одинаковые идентификаторы для параллельных строк.(обе таблицы продолжают жить после слияния, и одна синхронизируется с другой в соответствии с идентификаторами)

Как лучше всего это сделать?

  • Переименование идентификаторов первой таблицы в соответствии со второй, а затем изменение значения auto_increment для PK?

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

  • Есть ли лучший способ?

Кроме того, как это может повлиять на индексы?

есть ли у него какие-либо другие отговорки?(кроме foreign_keys и мест в коде - если они существуют - с использованием жестко закодированных значений идентификаторов)

1 Ответ

0 голосов
/ 28 февраля 2011
  1. Не думайте, что у вас есть выбор.Вы должны генерировать новые идентификаторы.Когда вы вставляете записи, auto_increment все равно происходит.
  2. У вас может быть дополнительная ссылка на столбец, которая может иметь исходное значение ключа таблицы для обратной трассировки.
  3. Индексы PK будут переиндексированы.

Другие последствия зависят от функциональности приложения, которую вы должны учитывать.

...