当前位置:首页 > 开发 > 数据库 > 正文

使用MySQL的LAST_INSERT_ID

发表于: 2014-09-02   作者:宋小寒   来源:转载   浏览:
摘要: LAST_INSERT_ID 自动返回最后一个 INSERT 或 UPDATE 操作为 AUTO_INCREMENT 列设置的第一个发生的值. 参考这里  The ID that was generated is maintained in the server on a per-connection basis. LAST_INSERT_ID是基于单个connectio

LAST_INSERT_ID

自动返回最后一个 INSERT 或 UPDATE 操作为 AUTO_INCREMENT 列设置的第一个发生的值. 参考这里 

The ID that was generated is maintained in the server on a per-connection basis.

LAST_INSERT_ID是基于单个connection的, 不可能被其它的客户端连接改变。

 可以用 SELECT LAST_INSERT_ID(); 查询LAST_INSERT_ID的值.

Important: If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.

使用单INSERT语句插入多条记录,  LAST_INSERT_ID只返回插入的第一条记录产生的值. 比如

  1. mysql> INSERT INTO t VALUES (NULL, 'aaaa'), (NULL, 'bbbb'), (NULL, 'cccc');   
  2. mysql> SELECT * FROM t;   
  3. +----+------+   
  4. | id | name |   
  5. +----+------+   
  6. |  1 | Bob  |   
  7. |  2 | aaaa |   
  8. |  3 | bbbb |   
  9. |  4 | cccc |   
  10. +----+------+   
  11. mysql> SELECT LAST_INSERT_ID();   
  12. +------------------+   
  13. | LAST_INSERT_ID() |   
  14. +------------------+   
  15. |                2 |   
  16. +------------------+  

ID 2 是在插入第一条记录aaaa 时产生的.

LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。

一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。

但在多线程情况下,就不行了。在多用户交替插入数据的情况下max(id)显然不能用。

这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于 Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对 AUTO_INCREMENT列最新的insert or update操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。

 

 

引自:http://wangcheng.iteye.com/blog/54293

使用MySQL的LAST_INSERT_ID

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
MySql查询数据编码: 1、mysql -h127.0.0.1(你要访问的主机的地址) -uroot(用户名) -proot(密码) 2、
我们平常所说的索引,如果没有特别指明,都是指B+树结构组织的B-Tree索引。其中聚集索引,次要索引
在本章第一节中我们还提到过通过 Query Profiler 来定位一条 Query 的性能瓶颈,这里我们再详细介绍
 1、下载MySQL的安装文件    安装MySQL需要下面两个文件:    MySQL-server-5.5.19-1.linux2
配置基本上搞定,可以登录到MYSQL里了,开始MYSQL的命令行之旅: 1:登录 #mysql -u用户名 -p 提示
原文: mysql及powerdesigner的初次使用 MYSQL的下载与安装: 下载与安装指导教程: http://jingyan.b
1、Mac下MySQL的安装:http://my.oschina.net/joanfen/blog/171109 2、在使用MySQL之前要确保"系统
在使用MySQL中,常常会在表中建立一个自增的ID字段,利用自增ID可以高速建立索引,也是MySQL官方比
最近在使用Mysql时,经常需要用到游标,所以将使用方法做下记录以备日后查看。(这里只是为了说明游
MYSQL的下载与安装: 下载与安装指导教程: http://jingyan.baidu.com/article/597035521d5de28fc00
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号