複数のレコード INSERT ステートメントでの LAST_INSERT_ID() の動作
単一の INSERT ステートメントで複数のレコードを MySQL テーブルに挿入する場合、LAST_INSERT_ID()通常、最後ではなく最初に挿入されたレコードの ID を返します。
MySQL ドキュメントで確認されているように、この動作により、INSERT ステートメントを他のサーバーで正確に再現できます。後続のレコードの ID 値は、異なるデータベース サーバー間で一貫して割り当てることができないため返されません。
例:
次の INSERT ステートメントを考えてみましょう:
INSERT INTO people (name, age) VALUES ('William', 25), ('Bart', 15), ('Mary', 12);
このステートメントを実行すると、LAST_INSERT_ID() は最初に挿入されたレコード (William) の ID である 1 を返します。これは予期された動作であり、意図しない結果が生じることなくステートメントを複製できることが保証されます。
影響:
複数のレコードの挿入を処理するコードでは、次の点に注意することが重要です。この動作を考慮し、それに応じて ID 値を処理します。たとえば、挿入されたすべてのレコードの ID を取得する必要がある場合は、挿入された行数を返して ID を個別に取得するなど、別のアプローチを使用する必要がある場合があります。
以上がMySQL の複数レコードの INSERT ステートメントで LAST_INSERT_ID() はどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。