SELECT結果(複数行)を INSERT INTO する際、 AUTO_INCREMENTの カラム値が変更される場合について
新旧DBは同じ構成だが、レコード値は異なる
sテーブル
・idカラム AUTO_INCREMENT
・c_idカラム
・hogeカラム
rテーブル
・r_idカラム AUTO_INCREMENT
・s_idカラム
・hogeカラム
やりたいこと
旧DBにあるsテーブル及びrテーブルの一部を、新DBへINSERTしたい
※新DBにある既存データへ追加
作成したSQLのイメージ
INSERT INTO 新DB名.`s` (`id`,`hoge`)
SELECT `id` ,`hoge`
FROM 旧DB名.`s`
WHERE `c_id` = 7
INSERT INTO 新DB名.`r` (`s_id`,`hoge`)
SELECT `s_id`,`hoge`
FROM 旧DB.`r`
WHERE `s_id` in (SELECT id FROM s WHERE c_id = 7)
困っている点
r
テーブルのs_id
カラムは、s
テーブルのid
カラムに紐付いているが、複数行INSERTすることで、s
テーブルのid
カラムの値が(AUTO_INCREMENTだから)変わってしまうので両者の関係性が壊れてしまう
- 案1.INSERT した 新DBのidを全部取得して、それをどうにかしてSQLへ組み込む
- 案2.INSERT する際、AUTO_INCREMENT値をどうにかして変えないようにする
- 案3.複数行の一括処理は諦めて、1件1件どうにかする
その他の案は何かありますか?