MYSQL中如何 高效获取新插入的流水记录
来源:互联网 发布:linux vim颜色主题 编辑:程序博客网 时间:2024/05/17 02:00
在MySQL中,运用 auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成“主从表结构”,这是数据库设计中多见的用法。但是在详细生成id的时刻,咱们的操作顺序通常是:先在主表中插入记载,然后取得自动生成的id,以它为基本插入从表的记载。这里面有个难处,就是插入主表记载后,如何 取得它对应的id。通常的做法,是议决 “select max(id) from tablename”的做法,但是显然这种做法须要思虑并发的情况,须要在事务中对主表加以“X锁“,待取得 max(id)的值以后,再解锁。这种做法须要的步骤比较多,有些麻烦,并且并发性也不好。有没有更基本的做法呢?答案之一是议决 select LAST_INSERT_ID()这个操作。乍一看,它和select max(id)很象,但实际上它是线程安全的。也就是说它是详细于数据库连接的。下面议决实验表明: 1、在连接1中向A表插入一条记载,A表包含一个auto_increment类型的字段。 2、在连接2中向A表再插入一条记载。 3、结果:在连接1中执行select LAST_INSERT_ID()得到的结果和连接2中执行select LAST_INSERT_ID()的结果是不一样的;而在两个连接中执行select max(id)的结果是相似的。 本来在MSSQL中SCOPE_IDENTITY()和IDENT_CURRENT()的区别和这里是类似的。运用 SCOPE_IDENTITY()能够取得插入某个IDENTITY字段的当前会话的值,而运用 IDENT_CURRENT()会取得在某个IDENTITY字段上插入的最大值,而不区分不一样的会话。 注:运用 select last_insert_id()时要留心,当一次插入多条记载时,只是取得第一次插入的id值,务必留心!能够试试 insert into tb(c1,c2) values (c1value,c2value),(c1value1,c2value2)..。
- MYSQL中如何 高效获取新插入的流水记录
- MySQL使用LAST_INSERT_ID()获取新插入记录的ID
- mybatis如何获取oracle新插入数据记录的主键?
- mybatis如何获取oracle新插入数据记录的主键?
- Navicat for MySql 如何插入新记录
- navicat中如何插入一行新记录
- 获取新插入的记录ID
- MySQL高效获取记录总数
- 在SQL Server中如何获得刚插入一条新记录的自动ID号
- 在SQL Server中如何获得刚插入一条新记录的自动ID号
- 【转帖】在SQL Server中如何获得刚插入一条新记录的自动ID号
- JDBC获取新插入记录id的三种方法
- MySQL中如何获取下一条插入的自增ID 或 刚刚插入的id
- Mysql中获取新插入的自增id的三种方法
- MYSQL中如何获取最后一条记录?
- JSP中如何获取刚插入记录的ID,此Id是自增的
- hibernate中获取使用mysql当前插入一条记录的id值
- MSSQL如何获得新插入记录的ID值?
- Android多媒体学习五:调用Android自带的播放器播放Audio
- itoa与atoi 2011.04.18
- Linux内存管理(下)
- rar简单打包详细方法
- 理解动态代理的实现过程
- MYSQL中如何 高效获取新插入的流水记录
- 思念不会再有相见
- Ext 4 概述(一)
- 求一个unsigned int 数的二进制表示中有多少个1?
- Tomcat 严重: IOException while loading persisted sessions: java.io.EOFException
- FTP协议的命令与返回码
- 利用請求状态来提示信息
- zenoss入门
- 项目经理进阶修炼1--项目调研沟通