MYSQL中取得最后一条记录

数据库 MySQL
MYSQL数据库是一种应用很普遍的小型关系数据库管理系统,在数据库市场中虽然不是最好的吧,但是还是占据着一点份额的,下文中将为大家讲解MYSQL取得最后一条记录的介绍,希望对大家能够有所帮助。

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值,务必注意!

关于MYSQL中取得最后一条记录的知识就为大家讲到这里,希望大家通过本文的学习能够对这个知识有个大体的了解,然后进一步去掌握更为重要的知识,最后,希望大家都能够从上文中讲到的内容中有所收获。

 

责任编辑:迎迎 来源: 中国站长站综合
相关推荐

2024-04-19 07:31:58

MySQL数据库

2021-09-12 07:26:49

MySQL SQL 语句数据库

2011-08-17 09:13:08

MySQL数据库多条记录的单个字段

2022-05-25 08:01:37

WHERESQL 语句

2015-07-28 11:06:28

日志记录Linux命令

2020-11-04 07:08:07

MySQL查询效率

2023-06-18 23:13:27

MySQL服务器客户端

2024-07-29 09:49:00

SQLMySQL执行

2018-08-26 06:24:58

MySQLInnoDB行锁

2010-04-13 16:57:01

2010-11-15 14:16:09

Oracle表记录

2011-03-21 17:19:12

LAMPUbuntu

2019-03-28 10:09:49

内存CPU硬盘

2023-10-06 15:29:07

MySQL数据库更新

2011-06-24 09:20:04

编程语言

2021-04-16 07:04:53

SQLOracle故障

2011-12-29 20:58:46

Windows Pho

2016-10-12 09:48:17

WiFi无线网络高校

2023-11-01 16:50:58

2021-06-15 10:46:51

HTTPS网络协议TCP
点赞
收藏

51CTO技术栈公众号