Я пытаюсь объединить две таблицы с одинаковой структурой. В известном блоке строк первичный ключ (целое число auto_increment) используется в обеих таблицах для разных данных. Скажем, это строки с первичными ключами 2000-2150. Каков наилучший способ перенумеровать эти записи в таблице B на неиспользуемые значения (скажем, в диапазоне выше 3000), чтобы слияние продолжалось без конфликтов? Должен ли я просто ОБНОВИТЬ их на месте (например, добавив 1000 к каждому идентификатору в этом диапазоне), или есть ли лучшие способы?Слияние двух таблиц SQL с конфликтами ключей
Примечания:
Все ссылки на эту таблицу объявляются
ON UPDATE CASCADE
, так что я могу спокойно пронумеровать их без последствий.Остальное слияние, с которым я могу справиться. Обе таблицы содержат полезные данные, и когда ключ за пределами этого диапазона повторяется, я буду держать версию в таблице А.
Если бы вы могли, просьба предоставить запрос, который вы сейчас пытаетесь, чтобы у нас было что-то, что можно было бы отключить. Однако в качестве короткого ответа в вашем выборе «Таблица B» вы можете: «выбрать Id + 3000, col2, col3, col4 из TableB'. - То есть, если столбец 'Id' является числовым. – gmiley
У меня пока нет запроса - я не уверен, какой подход взять. Я подумал о том, чтобы «UPDATE» добавить 1000 к каждому идентификатору в блоке, но я подумал, что спрошу, есть ли более подходящий подход. – alexis
Хорошо, я просто переведу свой комментарий к ответу и, возможно, добавлю еще несколько мыслей. – gmiley