加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

使用MySQL的LAST_INSERT_ID--转

发布时间:2020-12-11 23:55:36 所属栏目:MySql教程 来源:网络整理
导读: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的,?不可能被其它的客

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??statement,??returns the value generated for the?first?inserted row?only.

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

?
  • mysql>?
  • |?id?|?
  • |??1?|?Bob??| ??
  • |??3?|?bbbb?| ??
  • +
  • ?
  • +
  • +
  • +
  • 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

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读