これには 2 つの方法があるようですが、最初の方法は次のようになります。
$result = mysql_query("SHOW TABLE STATUS LIKE 'table_name'");
$row = mysql_fetch_array($result);
$nextId = $row['Auto_increment'];
mysql_free_result($result);
$sql = mysql_query("INSERT the information you want in the main table")
次に、関連するすべてのテーブルに $nextid を外部キーとして挿入できます。
もう 1 つの方法では、最後の挿入 ID を使用します。
START TRANSACTION;
INSERT INTO files (file_id, url) VALUES (NULL, 'text.doc');
INSERT INTO grades (file_id, grade) VALUES (LAST_INSERT_ID(), 'some-grade');
COMMIT;
これらは両方ともスレッドセーフですか? IE、2 つの mysql スレッドを同時に実行する 2 つの php スクリプトがあり、それらが同時にメイン テーブルに挿入される場合、関連付けられたテーブルは正しいプライマリ ID 外部キーを受け取りますか、それとも混乱や衝突が発生する可能性がありますか?
ありがとう。