5

PDOを使用して次のクエリを実行します(実際には、プリペアドステートメントを使用しますが、同じ問題があります)

INSERT INTO MyTable(MyField) VALUES('Row1'), ('Row2')

Row1およびに関連するレコードのIDを取得するにはどうすればよいRow2ですか?

$db->lastInsertId()文字通り最後の単一IDを返します。

この最後のIDを取得し、レコード数を減算して、範囲がすべてのレコードをカバーすると想定するだけで十分ですか?ギャップ/ジャンプがありますか?このクエリはアトミックであることが保証されていますか?

4

1 に答える 1

3

MyISAM テーブルを使用している場合、テーブル レベルのロック メカニズムのために、特定の範囲の ID しか取得できません。

「従来の」innodb ロックを使用していると仮定してhttp://dev.mysql.com/doc/refman/5.5/en/innodb-auto-increment-handling.html#innodb-auto-increment-traditionalを読んだ後(おそらくあなたはそうです)そして、単一のステートメントの場合、IDのセットは連続します。

于 2011-05-09T19:12:11.687 に答える