これに対する答えは、MySQLで対処されていると思います。ドキュメント :
テーブルにAUTO_INCREMENTが含まれている場合 列とINSERT ... UPDATE 行を挿入します、LAST_INSERT_ID() 関数はAUTO_INCREMENTを返します 価値。ステートメントが代わりに行を更新する場合、LAST_INSERT_ID() 意味がありません。ただし、LAST_INSERT_ID(expr)を使用してこれを回避できます。 。 idがAUTO_INCREMENTであるとします。 桁。 LAST_INSERT_ID()を作成するには 更新に意味がある場合は、次のように行を挿入します。
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;