1. ホーム
  2. mysql

[解決済み] MySQLのテーブルに多くの行を挿入して、新しいIDを返すにはどうすればよいですか?

2023-05-10 06:03:08

質問

通常、MySQL テーブルに行を挿入して last_insert_id を返します。しかし、今、私はテーブルに多くの行を一括挿入し、ID の配列を取得したいのです。誰かこれを行う方法を知っていますか?

似たような質問がいくつかありますが、全く同じではありません。私は新しいIDを任意の一時的なテーブルに挿入したいわけではなく、IDの配列を取得したいだけです。

一括挿入から lastInsertId を取得することはできますか?

Mysql の last_insert_id() による複数行の挿入-選択ステートメント。

どのように解決するのですか?

古いスレッドですが、ちょうどこれを調べたところなので、ここで説明します。最近のバージョンの MySQL で InnoDB を使用している場合、ID のリストを取得するには、次のようにします。 LAST_INSERT_ID()ROW_COUNT() .

InnoDBは、バルク挿入を行う際にAUTO INCREMENTの連番を保証していますが、以下の条件があります。 innodb_autoinc_lock_mode が0(従来型)または1(連続型)に設定されている場合に限ります。 その結果、あなたは 最初 からIDを取得できます。 LAST_INSERT_ID() 最後の を追加することで ROW_COUNT()-1 .