MySQL の複数レコード INSERT ステートメントでの LAST_INSERT_ID() の動作
MySQL の LAST_INSERT_ID() 関数は、最後に挿入された行に対して生成された ID を取得します。この動作は、単一レコードの INSERT ステートメントを使用する場合と、複数レコードの INSERT ステートメントを使用する場合では異なる場合があります。
単一レコードの INSERT ステートメント
単一レコードの INSERT の場合ステートメントの場合、LAST_INSERT_ID() は、最後のレコードに対応する、期待どおりに生成された ID を返します。
複数レコードの INSERT ステートメント
ただし、複数レコードの INSERT ステートメントを使用する場合、LAST_INSERT_ID() は最初に挿入された行に対応する ID を返します。この動作は MySQL ドキュメントに明示的に記載されており、同じ INSERT ステートメントを別のサーバーで簡単に再現できることが強調されています。
例
次の複数レコードの INSERT を考えてみましょう。ステートメント:
INSERT INTO people (name,age) VALUES ('William',25), ('Bart',15), ('Mary',12);
このステートメントの実行後、 LAST_INSERT_ID() は、挿入された最初のレコード ('William') に対して生成された ID を示す 3 ではなく 1 を返します。
推論
この動作により、データの一貫性が保証されます。サーバー。 LAST_INSERT_ID() が複数レコード ステートメントで最後に挿入された行の ID を返した場合、同じ行に異なる ID を割り当てる他のサーバーでは INSERT ステートメントを再現できなくなります。
以上がMySQL で `LAST_INSERT_ID()` は複数レコードの `INSERT` ステートメントでどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。