当前位置:七道奇文章资讯数据防范MySQL防范
日期:2011-01-25 22:43:00  来源:本站整理

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

insert into tb(c1,c2) values (c1value,c2value),(c1value1,c2value2)...   以上是“MYSQL中获得最后一条记录[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .