Необходимо скопировать записи с одной таблицу в другую идентичную. Автоинкремента по ключу нет, как избежать повторения ключа?
Есть основная (первая) таблица и дополнительная (вторая), в которую иногда делаются копии записей из первой. По структуре они идентичны, только во второй таблице отключен автоинкремент по столбцу Код - первичный ключ, а в первой включен. Необходимо сделать так, чтобы при копировании данных из первой таблицы во вторую избегалось повторение Код`а.
Запрос:
Insert into Нагр2(Код, Столбец2, Столбец3...)
Select Код, Столбец2, Столбец3... From Нагр1
Where Нагр1.СтолбецN = '...'
Думал сделать (MAX(Код) + 1) as Код, но не понял куда вставить. Как можно доработать запрос, чтобы записи копировались и не возникало конфликтов с кодом?
Ответы (1 шт):
Можете просто добавлять во вторую таблицу те записи из первой таблицы, которых там ещё нет. По ключу и проверяйте их наличие. Если в первой ключи не пересекаются, то и во второй это поле не пересечётся.
Insert into Нагр2(Код, Столбец2, Столбец3...)
Select Код, Столбец2, Столбец3... From Нагр1
where Нагр2.Код not in (select Код from Нагр1)