ホームページ >データベース >mysql チュートリアル >MySQL の複数行 INSERT ステートメントで LAST_INSERT_ID() はどのように動作しますか?
MySQL で LAST_INSERT_ID() を使用して複数行の INSERT ステートメントで最後の挿入 ID を返す
MySQL で複数のレコードの挿入を実行するときの理解LAST_INSERT_ID() 関数の動作が重要になります。挿入された行の ID を提供する単一行の挿入とは異なり、LAST_INSERT_ID() は複数行の INSERT ステートメントでは動作が異なります。たとえば、次のクエリを考えてみましょう:INSERT INTO people (name, age) VALUES ('William', 25), ('Bart', 15), ('Mary', 12);このステートメントを実行すると、LAST_INSERT_ID() 関数が最後に挿入された行 (3) の ID を返すことが期待されるかもしれません。ただし、LAST_INSERT_ID() の動作はこの期待とは異なります。
LAST_INSERT_ID() 最初の挿入 ID を返します
複数レコードの INSERT ステートメントのコンテキストでは、LAST_INSERT_ID( ) は、最初に挿入された行に対してのみ生成された ID を返します。この動作は MySQL のドキュメントに明示的に記載されています:Important If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.この設計上の決定により、同じ INSERT ステートメントを問題なく別のサーバーで簡単に再現できることが保証されます。最初に挿入された行の ID を使用すると、意図した動作を簡単に再現できます。
コード設計への影響
この動作を理解することは、複数行を挿入するための LAST_INSERT_ID() 関数。開発者は、このようなシナリオで挿入された行の特定の ID を決定するために LAST_INSERT_ID() に依存しないようにする必要があります。複数行の挿入で行 ID を追跡またはアクセスするための代替アプローチを検討する必要があります。以上がMySQL の複数行 INSERT ステートメントで LAST_INSERT_ID() はどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。