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

转载于:https://www.cnblogs.com/davidwang456/p/3945533.html

使用MySQL的LAST_INSERT_ID--转相关推荐

  1. Mysql函数Last_insert_id()的真正含义

    2019独角兽企业重金招聘Python工程师标准>>> mysql手册中说SELECT last_insert_id()是多用户安全的. LAST_INSERT_ID() LAST_ ...

  2. Postgres用returning实现mysql的last_insert_id

    为什么80%的码农都做不了架构师?>>>    今天开发问到,postgres里面有没有像mysql那样插入一个值后返回插入的值,这个是有的,而且有更强的扩展性.  示例: [pos ...

  3. mysql returning_Postgres用returning实现mysql的last_insert_id

    今天开发问到,postgres里面有没有像mysql那样插入一个值后返回插入的值,这个是有的,而且有更强的扩展性. 示例: [postgres@localhost ~]$ psql psql (9.2 ...

  4. Mysql函数:Last_insert_id()语法讲解

    Mysql函数可以实现许多我们需要的功能,下面介绍的Mysql函数Last_insert_id()就是其中之一,希望对您学习Mysql函数能有所帮助. 自动返回最后一个INSERT或 UPDATE 查 ...

  5. MySQL last_insert_id()函数

    转载自  MySQL last_insert_id()函数 MySQL LAST_INSERT_ID函数简介 在数据库设计中,我们经常使用代理键使用AUTO_INCREMENT属性为主键列生成唯一的整 ...

  6. MySQL的mysql_insert_id和LAST_INSERT_ID

    摘要:mysql_insert_id和LAST_INSERT_ID二者作用一样,均是返回最后插入值的ID 值 1 mysql_insert_id 一.PHP获取MYSQL新插入数据的ID  mysql ...

  7. mysql insert id的参数_Mysql----MySQL的mysql_insert_id和LAST_INSERT_ID(转)

    本文介绍的是mysql中last_insert_id和mysql_insert_id的区别 1 mysql_insert_id 一.PHP获取MYSQL新插入数据的ID mysql_insert_id ...

  8. adf4351_在ADF实体PK属性中使用MySQL自动增量PK列

    adf4351 大家好. 继续进行ADF + MySQL解决方法系列,今天我们将看到需要做些什么才能将MySQL PK自动增量列与ADF实体PK属性一起使用. 如果我们使用的是Oracle数据库,则可 ...

  9. php中mysql自增_MySQL的自增字段

    1.关键字 auto_increment 2.自增用法 例: CREATE TABLE animals ( id mediumint not null auto_increment, name cha ...

  10. mysql分库主键_分库主键设计-Mysql

    常见的两种方案,遍布网络: 第一种: replace方案,mysql解释:REPLACE的运行与INSERT很相像.只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE ...

最新文章

  1. iOS架构-cocoapods之本地git库的管理(15)
  2. list(map(lambda x:x[:-1], g.readlines())) 理解
  3. ScheduledExecutorService
  4. 基于linux的应用开发视频教程,基于LINUX+ARM的视频系统的应用和开发
  5. python︱处理与使用json格式的数据(json/UltraJSON/Demjson)、pickle模块、yaml模块
  6. swoole怎么做mysql连接池_Swoole4创建Mysql连接池
  7. spring2中jpa的配置和使用
  8. Web2.0浪潮下的广播电视业
  9. PVE解决VM is locked问题
  10. python培训班时间 费用-python培训班要多少钱?
  11. 技术脱盲贴1------WINPE手工制作
  12. Coursera Algorithm Ⅱ week4 编程作业 Boggle
  13. 前端--使用webstorm创建一个vue项目
  14. 开源的在线html编辑器,22个国外的Web在线编辑器收集
  15. 突击蓝桥杯嵌入式(一)——内容概览
  16. Java打怪升级道路
  17. 高防CDN如何防御网络攻击
  18. 区别 |Python的 open() 和with open() as
  19. cellspacing与cellpadding
  20. 信息安全之路入坑指南

热门文章

  1. 对没有标记为安全的activex控件进行初始化和脚本运行_新的C++安全编码规则出炉...
  2. php jcrop,PHP结合JQueryJcrop实现图片裁切实例详解
  3. java jsoup解析html标签_jsoup解析html
  4. java 日志输出 上下文_java – 使用ServletContextListener和SLF4J在contextDestroyed上没有日志输出...
  5. 用D触发器构造寄存器
  6. 单片微型计算机与一般微型计算机相比,单片机习题与思考题.doc
  7. python难度如何_入门Python学习难吗怎样规划学习路线
  8. bash 判断 os 版本_鸿蒙OS手机将至,华为手机用户提问,老款机器能升级吗?
  9. 《基于张量网络的机器学习入门》学习笔记5
  10. ubuntu虚拟机开机无法进入系统(initramfs)