使用MySQL的LAST_INSERT_ID--转
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只返回插入的第一条记录产生的值. 比如
- mysql> INSERT INTO t VALUES (NULL, 'aaaa'), (NULL, 'bbbb'), (NULL, 'cccc');
- mysql> SELECT * FROM t;
- +----+------+
- | id | name |
- +----+------+
- | 1 | Bob |
- | 2 | aaaa |
- | 3 | bbbb |
- | 4 | cccc |
- +----+------+
- mysql> SELECT LAST_INSERT_ID();
- +------------------+
- | LAST_INSERT_ID() |
- +------------------+
- | 2 |
- +------------------+
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--转相关推荐
- Mysql函数Last_insert_id()的真正含义
2019独角兽企业重金招聘Python工程师标准>>> mysql手册中说SELECT last_insert_id()是多用户安全的. LAST_INSERT_ID() LAST_ ...
- Postgres用returning实现mysql的last_insert_id
为什么80%的码农都做不了架构师?>>> 今天开发问到,postgres里面有没有像mysql那样插入一个值后返回插入的值,这个是有的,而且有更强的扩展性. 示例: [pos ...
- mysql returning_Postgres用returning实现mysql的last_insert_id
今天开发问到,postgres里面有没有像mysql那样插入一个值后返回插入的值,这个是有的,而且有更强的扩展性. 示例: [postgres@localhost ~]$ psql psql (9.2 ...
- Mysql函数:Last_insert_id()语法讲解
Mysql函数可以实现许多我们需要的功能,下面介绍的Mysql函数Last_insert_id()就是其中之一,希望对您学习Mysql函数能有所帮助. 自动返回最后一个INSERT或 UPDATE 查 ...
- MySQL last_insert_id()函数
转载自 MySQL last_insert_id()函数 MySQL LAST_INSERT_ID函数简介 在数据库设计中,我们经常使用代理键使用AUTO_INCREMENT属性为主键列生成唯一的整 ...
- MySQL的mysql_insert_id和LAST_INSERT_ID
摘要:mysql_insert_id和LAST_INSERT_ID二者作用一样,均是返回最后插入值的ID 值 1 mysql_insert_id 一.PHP获取MYSQL新插入数据的ID mysql ...
- 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 ...
- adf4351_在ADF实体PK属性中使用MySQL自动增量PK列
adf4351 大家好. 继续进行ADF + MySQL解决方法系列,今天我们将看到需要做些什么才能将MySQL PK自动增量列与ADF实体PK属性一起使用. 如果我们使用的是Oracle数据库,则可 ...
- php中mysql自增_MySQL的自增字段
1.关键字 auto_increment 2.自增用法 例: CREATE TABLE animals ( id mediumint not null auto_increment, name cha ...
- mysql分库主键_分库主键设计-Mysql
常见的两种方案,遍布网络: 第一种: replace方案,mysql解释:REPLACE的运行与INSERT很相像.只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE ...
最新文章
- iOS架构-cocoapods之本地git库的管理(15)
- list(map(lambda x:x[:-1], g.readlines())) 理解
- ScheduledExecutorService
- 基于linux的应用开发视频教程,基于LINUX+ARM的视频系统的应用和开发
- python︱处理与使用json格式的数据(json/UltraJSON/Demjson)、pickle模块、yaml模块
- swoole怎么做mysql连接池_Swoole4创建Mysql连接池
- spring2中jpa的配置和使用
- Web2.0浪潮下的广播电视业
- PVE解决VM is locked问题
- python培训班时间 费用-python培训班要多少钱?
- 技术脱盲贴1------WINPE手工制作
- Coursera Algorithm Ⅱ week4 编程作业 Boggle
- 前端--使用webstorm创建一个vue项目
- 开源的在线html编辑器,22个国外的Web在线编辑器收集
- 突击蓝桥杯嵌入式(一)——内容概览
- Java打怪升级道路
- 高防CDN如何防御网络攻击
- 区别 |Python的 open() 和with open() as
- cellspacing与cellpadding
- 信息安全之路入坑指南
热门文章
- 对没有标记为安全的activex控件进行初始化和脚本运行_新的C++安全编码规则出炉...
- php jcrop,PHP结合JQueryJcrop实现图片裁切实例详解
- java jsoup解析html标签_jsoup解析html
- java 日志输出 上下文_java – 使用ServletContextListener和SLF4J在contextDestroyed上没有日志输出...
- 用D触发器构造寄存器
- 单片微型计算机与一般微型计算机相比,单片机习题与思考题.doc
- python难度如何_入门Python学习难吗怎样规划学习路线
- bash 判断 os 版本_鸿蒙OS手机将至,华为手机用户提问,老款机器能升级吗?
- 《基于张量网络的机器学习入门》学习笔记5
- ubuntu虚拟机开机无法进入系统(initramfs)