旧テーブル群が外部キー制約していなかったので、親テーブルにない子テーブルのレコードがあった…。親レコードだけ削除して、子レコードだけ残っているパターンみたい。それは除外してinsert selectでデータ移行した。
1 2 3 4 5 6 7 8 9 10 |
-- 新しい親テーブルに存在しないIDの小テーブル・レコードを抽出 select 古い子テーブル.* from 古い子テーブル left outer join 新しい親テーブル on 古い子テーブル.id = 新しい親テーブル.id where 新しい親テーブル.id is null |
数件しか無いみたいだから、メモしておいて後で手入力しよう…。
1 2 3 4 5 6 7 8 9 10 11 |
-- 親テーブルだけ先にデータ移行している insert into 新しい子テーブル(カラムを色々) select 古い子テーブル.カラムを色々 from 新しい親テーブル inner join 古い子テーブル on 新しい親テーブル.id = 古い子テーブル.id |