複数のレコード挿入による LAST_INSERT_ID() の動作を理解する
MySQL で複数のレコードの挿入を扱う場合、その動作を理解することが不可欠です。 LAST_INSERT_ID() 関数。単一レコードの挿入とは異なり、LAST_INSERT_ID() は、複数レコードの挿入ステートメントで使用すると独特の動作を示します。
期待される動作
直感的には、LAST_INSERT_ID( ) 関数は、複数レコードの挿入に対して最後に挿入された ID を返します。ただし、これは当てはまりません。
実際の動作
MySQL ドキュメントに記載されているように、LAST_INSERT_ID() は、最初の ID に対してのみ生成された ID を返します。 row が複数レコードの挿入ステートメントに挿入されました。これは、異なるサーバー上で同じステートメントを簡単に再現できるようにするためのものです。
たとえば、次の複数レコードの挿入ステートメントを考えてみましょう。
INSERT INTO people (name,age) VALUES ('William',25), ('Bart',15), ('Mary',12);
たとえ 3 行を挿入しても、 LAST_INSERT_ID() は、最初に挿入されたレコードを表す「William」の ID を返します。
コードへの影響
この動作はコードに影響を与えます。 LAST_INSERT_ID() を使用して、複数レコードの挿入で挿入されたすべてのレコードの ID を取得する場合、最初のレコードの ID のみが取得されます。挿入されたすべてのレコードの ID を正確に取得するには、RETURNING 句を INSERT ステートメントと組み合わせて利用するか、ループを使用してレコードを 1 つずつ挿入するなどの代替アプローチを検討してください。
以上がMySQL での複数レコードの挿入で LAST_INSERT_ID() はどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。