複数のテーブルに一連の DB 挿入を行う PHP プログラムがあります。
挿入を別の DB に挿入できるように、プログラムが挿入の SQL ダンプを生成するという要件が発生しました。(この 2 番目のデータベースのスキーマは同じですが、データは異なります)。
SQL ダンプの生成は簡単です。クエリ文字列を実行時に出力するだけです。
ただし、相互参照 ID フィールドを使用して複数のテーブルに挿入を行っているため、この方法で生成された SQL には、外部キー フィールドの固定 ID 値が含まれています。
つまり、ダンプ ファイルのサンプルは次のようになります。
insert into tableA ....
insert into tableB .... id_a = 365 ....
insert into tableC .... id_b = 1895, id_a = 365 ....
...ここで、「365」と「1895」は$mysqli->insert_id
、前のテーブルに挿入されたレコードの ID を取得するために PHP 呼び出しによってクエリに入力されます。
したがって、これは、データを DB に挿入するために実行されたクエリの正確な図を表しています。
問題は、SQL ダンプが 2 番目のデータベースで実行されるときに、これらの固定 ID 値が明らかに正しくないことです。最初のレコードが 2 番目の DB の tableA に挿入されると、結果のレコードの ID は 365 になりません。したがって、その後の tableB と tableC への挿入にはその ID への固定参照が含まれているため、外部キーが指している状態で挿入されます。間違ったレコードに。
どうすればこの問題を解決できますか?
ID を固定せずに、同じクエリ ダンプ内の他の挿入を参照するこのタイプの SQL ダンプを生成する方法はありますか?
助けてくれてありがとう。