これに対する答えは、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;