mysql中的LAST_INSERT_ID()分析

转载 2015年11月20日 10:33:31
首先看mysql中的LAST_INSERT_ID()的官方说法:
 
LAST_INSERT_ID()自动返回最后一个INSERT或UPDATE查询中AUTO_INCREMENT列设置的第一个表发生的值。
MySQL的LAST_INSERT_ID的注意事项:
 
第一、查询和插入所使用的Connection对象必须是同一个才可以,否则返回值是不可预料的。
第二、LAST_INSERT_ID是与表无关的,如果向表a插入数据后再向表b插入数据,LAST_INSERT_ID返回表b的Id值
第三、假如你使用一条INSERT语句插入多个行,  LAST_INSERT_ID() 只返回插入的第一行数据时产生的值。
第四、假如你使用 INSERT IGNORE而记录被忽略,则AUTO_INCREMENT 计数器不会增量,而 LAST_INSERT_ID() 返回0, 这反映出没有插入任何记录。
 
根据这四条原则,我们讨论的高并发网站访问时的插入后取自增长值其实主要是跟第一条规则和第二条规则有关。即要保证LAST_INSERT_ID的正确性,必须同一个connection,并且LAST_INSERT_ID要紧跟在insert中执行。所以如果是数据库缓存池公用connection可能会出问题,多线程操作在insert后面由执行了别的insert时也会出问题。
 
而php的数据库连接本身是页面级的,这样就保证了不会出现缓冲池的情况,然后php页面执行本身也是单线程的,这样就保证了顺序编写的LAST_INSERT_ID肯定是紧跟在insert之后执行的,中间不会有别的insert执行。
 
综上所述,php的页面级、单线程其实已经保证了mysql的LAST_INSERT_ID天然就是正确的,跟高并发并没有关系。即php中,mysql的LAST_INSERT_ID总是正确的,随便用把,没有问题的。

相关文章推荐

mysql中的last_insert_id()

刚才查了下last_insert_id()相关资料,找到几篇不错的文章,保存下来,免得下次忘了又去找。 ################################# MySQL数据表结构...

MySQL的LAST_INSERT_ID用法

LAST_INSERT_ID() 自动返回最后一个INSERT或 UPDATE 查询中 AUTO_INCREMENT列设置的第一个表发生的值。MySQL的LAST_INSERT_ID的注意事项:第一、...
  • Destina
  • Destina
  • 2011年03月09日 11:50
  • 669

mysql中的last_insert_id()

刚才查了下last_insert_id()相关资料,找到几篇不错的文章,保存下来,免得下次忘了又去找。 ################################# MySQL数据表结构...

使用MySQL的LAST_INSERT_ID(转)

The ID that was generated is maintained in the server on a per-connection basis. LAST_INSERT_ID是基于单个...

mysql LAST_INSERT_ID详解

LAST_INSERT_ID() LAST_INSERT_ID(expr) 自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCREMENT列设置的第一个 发生的值。 ...

MYSQL LAST_INSERT_ID() 自增列详解

MYSQL自增列 1.关键字 :auto_increment 2.自增用法 例: CREATE TABLE animals ( id mediumint not null auto_i...

Mysql函数Last_insert_id()的真正含义

LAST_INSERT_ID() LAST_INSERT_ID(expr) 自动返回最后一个INSERT或 UPDATE 查询中 AUTO_INCREMENT列设置的第一个表发生的值。 m...
  • CNPJX
  • CNPJX
  • 2012年01月19日 12:33
  • 2678

mysql LAST_INSERT_ID 使用与注意事项

在使用MySQL时,若表中含自增字段(auto_increment类型),则向表中insert一条记录后,可以调用last_insert_id()来获得最近insert的那行记录的自增字段值 ...
  • elesos
  • elesos
  • 2016年09月07日 10:44
  • 2627

Mysql中LAST_INSERT_ID()的函数使用详解

最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表。研究了一番决定使用Mysql提供了一个LAST_INSER...

MySQL中获取最后插入的自增ID值 LAST_INSERT_ID

写数据库程序的时候,经常会需要获取某个表中的最大序号数, 在单线程的情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。但在多线程情况下,就不行了。在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql中的LAST_INSERT_ID()分析
举报原因:
原因补充:

(最多只允许输入30个字)