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()函数使用的注意事项

在使用MySQL时,若表中含自增字段(auto_increment类型),则向表中insert一条记录后,可以调用last_insert_id()来获得最近insert的那行记录的自增字段值(一个bi...
  • slvher
  • slvher
  • 2014年12月31日 18:59
  • 22438

mysql中的LAST_INSERT_ID()分析

今天跟人讨论php高并发下的LAST_INSERT_ID的正确性问题,一开始大家都比较模糊,后来经过大家共同查询资料,对这个问题有了比较清晰的了解,特发此文,以为纪念。   首先看mysql中的L...
  • q279838089
  • q279838089
  • 2014年11月13日 15:55
  • 994

MYSQL LAST_INSERT_ID() 自增列详解

MYSQL自增列 1.关键字 :auto_increment 2.自增用法 例: CREATE TABLE animals ( id mediumint not null auto_i...
  • zinger198208
  • zinger198208
  • 2012年11月09日 16:39
  • 928

mysql LAST_INSERT_ID 使用与注意事项

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

mysql的last_insert_id()用法

最近在做一个小东西的时候,发现mysql有last_insert_id()这个函数它的用法如下:记录下来备忘它必需紧跟在insert 语句执行之后。//执行insert语句先$sql="insert ...
  • kemy88
  • kemy88
  • 2006年08月23日 12:34
  • 26839

last_insert_id()函数使用的注意事项 mysql

本文转载自:http://blog.csdn.net/slvher/article/details/42298355 author:slvher    在使用MySQL时,若表中含自...
  • stevejobson
  • stevejobson
  • 2017年01月23日 13:53
  • 827

理解Mysql语句:insert 表名 select null 及 select last_insert_id()

理解MySQL语句:insert 表名 select null,用select last_insert_id()的风险
  • cherrycheng_
  • cherrycheng_
  • 2016年03月24日 15:33
  • 1270

关于Mysql LAST_INSERT_ID()使用

关于Mysql LAST_INSERT_ID()使用
  • z646721826
  • z646721826
  • 2017年12月06日 09:14
  • 98

SELECT LAST_INSERT_ID() 的使用和注意事项

尊重个人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/71302441首先我先解释以下在在映射文件中的代码是什么意思。 ...
  • czd3355
  • czd3355
  • 2017年05月06日 21:15
  • 6991

mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

mysql插入数据后返回自增ID的方法   mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如...
  • qq_32786873
  • qq_32786873
  • 2017年05月09日 18:57
  • 457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql中的LAST_INSERT_ID()分析
举报原因:
原因补充:

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