问题
Running the following query using PDO (Actually, I use prepared statements but same problem)
INSERT INTO MyTable(MyField) VALUES('Row1'), ('Row2')
How can I get the Ids for the records relating to Row1
and Row2
?
$db->lastInsertId()
literally returns the last single Id.
Is it sufficient to take this last Id, subtract the # of records and assume that range covers all my records? can there be gaps/jumps. Is this query guaranteed to be atomic?
回答1:
If you're using MyISAM tables then because of the table level locking mechanism it's only possible for you to get given a range of ids.
After reading http://dev.mysql.com/doc/refman/5.5/en/innodb-auto-increment-handling.html#innodb-auto-increment-traditional assuming you're using "traditional" innodb locking (which likely you are) then again for a single statement the set of IDs will be sequential.
来源:https://stackoverflow.com/questions/5941275/pdo-get-multiple-insert-ids