使用PDO运行以下查询(实际上,我使用预处理语句但问题相同)
INSERT INTO MyTable(MyField) VALUES('Row1'), ('Row2')
如何获取与Row1
和Row2
相关的记录的ID?
$db->lastInsertId()
从字面上返回最后一个Id。
获取最后一个Id是否足够,减去记录数并假设该范围涵盖了我的所有记录?可以有空隙/跳跃。这个查询是否保证是原子的?
答案 0 :(得分:3)
如果您正在使用MyISAM表,那么由于表级锁定机制,您只能获得一系列ID。
在阅读http://dev.mysql.com/doc/refman/5.5/en/innodb-auto-increment-handling.html#innodb-auto-increment-traditional后,假设您正在使用“传统”innodb锁定(可能是您),那么对于单个语句,ID将是连续的。