MySQL での一括挿入からの自動インクリメント ID の取得
データベース管理における一般的なタスクの 1 つは、テーブルに複数の行を挿入し、各行に対して生成された自動インクリメント ID を取得します。最後に挿入された ID を取得するのは LAST_INSERT_ID() 関数を使用すると簡単ですが、一括挿入では、生成されたすべての ID の配列を取得することが困難になります。
従来の方法: 一時テーブルを介した挿入
以前は、新しい ID を一時テーブルに挿入し、サブクエリを使用してそれらを取得するのが一般的な手法でした。ただし、このアプローチには追加の手順が必要であり、パフォーマンスのオーバーヘッドが生じます。
InnoDB での LAST_INSERT_ID() および ROW_COUNT() の使用
MySQL の最新バージョン、特に InnoDB を使用するバージョンストレージ エンジンでは、一括挿入 ID を取得するための代替方法を提供します。このメソッドは、LAST_INSERT_ID() 関数と ROW_COUNT() を利用して、割り当てられた自動インクリメント値の範囲を抽出します。
手順:
例:
INSERT INTO `my_table` (`name`, `email`) VALUES ('John Doe', 'john.doe@example.com'), ('Jane Doe', 'jane.doe@example.com'), ('Peter Jones', 'peter.jones@example.com'); SET @first_id = LAST_INSERT_ID(); SET @last_id = @first_id + ROW_COUNT() - 1; SELECT * FROM `my_table` WHERE `id` BETWEEN @first_id AND @last_id;
利点:
以上がMySQL への一括挿入後に自動インクリメント ID を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。