繁体   English   中英

php mysql_insert_id多行?

[英]php mysql_insert_id on multiple rows?

是否可以从插入多行的查询中获取自动递增的ID? 例如:

INSERT INTO表(col1,col2)VALUES(1,2),(3,4),(5,6);

换句话说,有没有办法找到NEXT自动增量值而不在表中插入任何内容?

谢谢

据我所知auto_increment没有填补id之间的差距,操作是原子的。 所以你可以假设它们会连续排列。

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

如果使用单个INSERT语句插入多行,则LAST_INSERT_ID()返回为第一个插入行生成的值。

所以不,你不能轻易获得所有的ID,但你可以认为它们是连续的。 永远不应该依赖于假设,但。 听起来你想猜测批量插入后的下一个id 如果是这样,甚至不要尝试这种方式,并想出另一种方法去做你想做的事情。 :)

要获取下一个auto_increment id,您可以使用:

SELECT auto_increment FROM information_schema.tables WHERE table_name = 'table-you-want-to-check';

但是,您可能不希望在代码的逻辑中依赖auto_increment id或last_insert_id() 例如,假设两个人A&B正在接近同一时刻向您的数据库添加问题,并且您正在使用last_insert_id()来确定该人的问题的ID。 当他们同时提交问题时会发生什么? 来自人A或B的last_insert_id()

克服此问题的一种方法是使用“预定义”id或guid作为自动递增id的补充或替代。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM