MYSQL中取得最后一条记录
来源:asp之家 发布时间:2010-03-09 16:08: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)..。


猜你喜欢
- http://www.cppcns.com/shujuku/mysql/283231.html 也可以参照这个8.0
- 视频观看视频入门pygame这是我们教程系列“使用 Pygame 进行游戏开发”的第 1 部分。它适
- 本文实例讲述了Python实现统计python文件中代码,注释及空白对应的行数。分享给大家供大家参考,具体如下:其实代码和空白行很好统计,难
- 最近在做python的web开发(原谅我的多变,好东西总想都学着。。。node.js也是),不过过程中总遇到些问题,不管是web.py还是d
- 使用通用视图的方法是在URLconf文件中创建配置字典,然后把这些字典作为URLconf元组的第三个成员。例如,下面是一个呈现静态“关于”页
- 记得之前learn python一书里面,因为当时没有官方支持,只能通过hack的方式实现抽象方法,具体如下 最简单的写法class MyC
- 一、我为什么要写这篇好兄弟们,妹子要少看,技能要多学,每天一个小技巧,撩妹手段少不了~昨天有人问我怎么批量修改文件名,然后我随便写了一种,他
- 请问,如何在ACCESS数据库和SQL SERVER数据库中查询?
- 前言docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt。它在 README 中就已经做
- 使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。1.安装openssl和php的openssl
- 安装完python之后,我们可以做两件事情,1.将安装目录中的Doc目录下的python331.chm使用手册复制到桌面上,方便学习和查阅2
- 本文为大家分享了MySQL5.6安装教程,具体内容如下1. 下载MySQL2. 解压MySQL压缩包将以下载的MySQL压缩包解压到自定义目
- python的dict用起来很方便,可以自定义key值,并通过下标访问,示例如下:>>> d = {'key1
- 一直想了解Web编程的技术。PHP是进行Web编程重要的一种语言,书上总是说,PHP是用于服务器端的编程语言。但是,实在不能理解它是怎么用于
- 前言在 Go 语言中,Goroutine 和 Channel 是非常重要的并发编程概念,它们可以帮助我们解决并发编程中的各种问题。关于它们的
- 1、主题如何使用Pycahrm内置终端以及远程SSH工具。2、准备工作Pycharm版本为3.0或更高连接SSH服务器3、使用SSH客户端4
- 1.自定义管理器(Manager)在语句Book.objects.all()中, objects 是一个特殊的属性,通过它来查询数
- 本文实例讲述了Zend Framework教程之资源(Resources)用法。分享给大家供大家参考,具体如下:Zend_Applicati
- 目录前言redo log的产生redo log 的提交redo log 的落盘及通知通知用户线程总结前言最开始
- 作为一款「写作软件」在诞生之初就支持了 Markdown,Markdown 是一种「电子邮件」风格的「标记语言」,我们强烈推荐所有写作者学习