Вам нужно что-то вроде
INSERT INTO TABLE1_anonymous (fields except id)
SELECT (fields except id)
FROM TABLE1;
INSERT INTO TABLE2_anonymous (fields except id and table1_id), table1_id
SELECT (fields from TABLE2 except id and table1_id),
TABLE1_anonymous.id
FROM TABLE1
JOIN TABLE1_anonymous USING (fields except id)
JOIN TABLE2 ON TABLE1.id = TABLE2.table1_id;
Соединения в последнем запросе позволяют вам заменить значение id
в исходной таблице, на которое ссылается table1_id
, новым назначенным значением auto_incremented id
из копия анонимной таблицы.
В качестве альтернативы вы можете изменить структуру анонимной таблицы, добавить поле old_id
, вставить в нее значения id
во время копирования, затем восстановить целостность ссылок, используя эти значения, и, наконец, удалить эти поля .