MySQL での ID 取得による複数の行の挿入
MySQL テーブルにデータを挿入すると、通常、LAST_INSERT_ID を介して新しく作成された行の ID が返されます。 () 関数。ただし、複数の行を挿入する場合、ID の配列の取得が困難になることがあります。
InnoDB による一括挿入
最近の MySQL バージョンを使用している InnoDB テーブルの場合、 LAST_INSERT_ID() と ROW_COUNT() を組み合わせて、挿入された ID を取得します。 InnoDB は、innodb_autoinc_lock_mode 設定が 0 (従来型) または 1 (連続) の場合、一括挿入に対して連続した自動インクリメント ID を提供します。
ID 範囲の取得
一括挿入を想定声明は行われました実行:
INSERT INTO table (`column1`, `column2`) VALUES ..., ..., ...
次の式を使用して、新しく挿入された行の ID の範囲を計算できます:
INSERTED_ID_RANGE = [LAST_INSERT_ID(), LAST_INSERT_ID() + ROW_COUNT() - 1]
例
次の一括挿入を考えてみましょう:
INSERT INTO table (`column1`, `column2`) VALUES (1, 'value 1'), (2, 'value 2'), (3, 'value 3');
挿入後の LAST_INSERT_ID() が 5 の場合、挿入される ID 範囲は次のようになります:
[5, 5 + ROW_COUNT() - 1] = [5, 5 + 3 - 1] = [5, 7]
したがって、挿入される ID の配列は [5, 6, 7] になります。
以上がMySQL に複数の行を挿入した後に ID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。