MySQL で返された ID を使用した一括挿入
MySQL テーブルへの複数の行の挿入は一般的なタスクです。ただし、一括挿入後に新しく生成された ID を取得する必要がある場合は、標準の LAST_INSERT_ID() 関数では十分ではありません。
InnoDB ソリューション
テーブルの場合InnoDB ストレージ エンジン (ほとんどのワークロードに推奨される設定) を使用し、MySQL は LAST_INSERT_ID() を使用したソリューションを提供し、 ROW_COUNT() 関数。その仕組みは次のとおりです。
InnoDB では、innodb_autoinc_lock_mode が 0 (従来型) または 1 (連続型) に設定されている場合、AUTO INCREMENT を使用した一括挿入により連続番号が保証されます。これは、LAST_INSERT_ID() を使用して最初の ID を取得し、ROW_COUNT() - 1 を追加することで最後の ID を取得できることを意味します。
例:
INSERT INTO example_table (name) VALUES ('John'), ('Mary'), ('Bob'); -- Get first ID SELECT LAST_INSERT_ID() AS first_id; -- Get row count SELECT ROW_COUNT() AS row_count; -- Get last ID SELECT LAST_INSERT_ID() + ROW_COUNT() - 1 AS last_id;
以上がMySQL への一括挿入後に自動生成された ID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。