ホームページ >データベース >mysql チュートリアル >MySQL の複数行 INSERT ステートメントで LAST_INSERT_ID() はどのように動作しますか?

MySQL の複数行 INSERT ステートメントで LAST_INSERT_ID() はどのように動作しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-14 20:14:02805ブラウズ

How Does LAST_INSERT_ID() Behave in Multi-Row INSERT Statements in MySQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。