と同一のテーブル間の行のコピー同じ構造の2つのテーブルがあり、自動インクリメントされたIDがあり、行を一方から他方にコピーしようとしています。自動インクリメントIDの
テーブルAからテーブルBに行をコピーしようとしたときに、テーブルBに既に存在するものと一意のIDが衝突すると、コピーしている行のIDを設定するだけです次の値は自動インクリメントカウンタの値です。
これは私にとって驚くべきことですが、これは証明しています。ここに私が持っているものがあります:
"INSERT INTO tableB SELECT * FROM tableA WHERE tableA.id = '$id'ON DUPLICATE KEY UPDATE tableB.id = LAST_INSERT_ID(tableB.id)"
それは私のために働いていないようです。もう一つは、キーが変更された場合、新しいキーが何であるかを伝えることができ、私がコピーしている関連テーブルの行に対して必要な変更を加えることができるようにする必要があるということです。
誰かが間違っていることを指摘できますか?
私はここにこれに類似した質問があることを知っています。私はそれらをすべて読んだことがありますが、それでも意味をなさないようです。
背景情報の編集:誰かが私の設定がその方法である理由を尋ねて以来(そして、それが最適でない場合は驚くことはありません)。基本的には、別のウェブサイトからいくつかのものを取り除いて、たくさんの文字列をマッチングしてDBにしています。しかし、スクレイピングプロセスの厄介な性質のために、私は最近スクレイプされたデータに対してライブクエリを実行するのは好きではありません。だから、基本的に私はcronのスケジュールを掻き集め、データの整合性を頻繁にチェックし、それが大丈夫だと思うと、クエリが実行される "ライブ"テーブルにコピーします。
ええ、私はデータベースを設計していたときにその方法について考えました(リレーショナルデータベースで作業するたびに初めてのことです)。私は何千ものレコードを持っていたときに余分な列のオーバーヘッドを費やす価値はないと思っていました。データベース。私はそれがちょうどブール型の列の場合、追加のオーバーヘッドはかなり簡単だろうと思う。 –