Mysql中LAST_INSERT_ID()函数使用方法总结

  • 时间:
  • 7935人关注

从名字可以看出,LAST_INSERT_ID即为最后插入的ID值,有了这个实用的函数,我们可以实现很多问题,下面我们就来深入探讨下。,另外这篇文章主要知识点是关于Mysql、LAST_INSERT_ID()函数、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子资料:

教程详情电子资料
  • 教程类别:
  • 编辑整理:丁高雅
  • 教程字数:1995字节
  • 阅读时间:大概5分钟
  • 下载本教程(DOC版)
  • MySQL是怎样运行的:从根儿上理解 MySQL
  • Centos7下安装mysql5.7的步骤
  • 高性能MySQL
  • MySQL8从入门到精通
  • MySQL8 Cookbook(中文版)
  • 最近和Sobin在做一个精品课程的项目,因为用到一个固定的id作为表间关联,所以在前一个表插入数据后要把插入数据生成的自增id传递给下一个表。研究了一番决定使用Mysql提供了一个LAST_INSERT_ID()的函数。

     


    LAST_INSERT_ID() (with no argument) returns the first automatically generated value that was set for an AUTO_INCREMENT column by the most recently executed INSERT or UPDATE statement to affect such a column. For example, after inserting a row that generates an AUTO_INCREMENT value, you can get the value like this:
    mysql> SELECT LAST_INSERT_ID();
    -> 195

     

    简单说来,就是这个函数将返回插入的那条记录在表中自增的那个字段的值,一般我们都给那个自增字段命名为ID。这样就可以返回刚插入的记录的ID值了。

    一个简单的例子:

     


    $query="INSERT INTO `testtable` (`clou1`,`clou2`) VALUES ('testvalue','test')";
    mysql_query($query);
    $query="SELECT LAST_INSERT_ID()";
    $result=mysql_query($query);
    $rows=mysql_fetch_row($result);
    echo $rows[0];

     

    这个函数是基于connection的,也就是不会被其他客户端的connection影响到,所以结果是准确的。如果使用select max(id) from table,在高密度的插入请求下,是有可能出问题的,返回错误值

    LAST_INSERT_ID说明

    从名字可以看出,LAST_INSERT_ID即为最后插入的ID值,根据MySQL的官方手册说明,它有2种使用方法

    一是不带参数:LAST_INSERT_ID(),这种方法和AUTO_INCREMENT属性一起使用,当往带有‘AUTO_INCREMENT'属性字段的表中新增记录时,LAST_INSERT_ID()即返回该字段的值,大家可试下(我已经验证过);
    二是带有表达式:如上面介绍的LAST_INSERT_ID(value+1),它返回的是表达式的值,即‘value+1';
    ##################################
    LAST_INSERT_ID() 自动返回最后一个INSERT或 UPDATE 查询中 AUTO_INCREMENT列设置的第一个表发生的值。

    MySQL的LAST_INSERT_ID的注意事项:

    第一、查询和插入所使用的Connection对象必须是同一个才可以,否则返回值是不可预料的。

    mysql> SELECT LAST_INSERT_ID();

            -> 100

    使用这函数向一个给定Connection对象返回的值是该Connection对象产生对影响AUTO_INCREMENT列的最新语句第一个AUTO_INCREMENT值的。这个值不能被其它Connection对象的影响,即它们产生它们自己的AUTO_INCREMENT值。

    第二、LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值。

    第三、 假如你使用一条INSERT语句插入多个行,  LAST_INSERT_ID() 只返回插入的第一行数据时产生的值。其原因是这使依靠其它服务器复制同样的 INSERT语句变得简单。

    mysql> INSERT INTO t VALUES

        -> (NULL, ‘Mary'), (NULL, ‘Jane'), (NULL, ‘Lisa');

    mysql> SELECT * FROM t;

    | id | name |

    +—-+——+

    |  1 | Bob  |

    |  2 | Mary |

    |  3 | Jane |

    |  4 | Lisa |

    mysql> SELECT LAST_INSERT_ID();  //这就是我要说明的关键问题。

    | LAST_INSERT_ID() |

    |                2 |

    虽然将3 个新行插入 t, 对这些行的第一行产生的 ID 为 2, 这也是 LAST_INSERT_ID()返回的值。

    以上所述就是本文的全部内容了,希望大家能够喜欢。

    请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!


    上一篇:Mysql中用concat函数执行SQL注入查询的方法

    下一篇:把MySQL的临时目录建立在内存中的方法

    相关内容

    • 轻松掌握MySQL函数中的last_insert_id()

      相信大家应该都知道Mysql函数可以实现许多我们需要的功能,这篇文章介绍的Mysql函数Last_insert_id()就是其中之一,文章通过一个例子展开来讲,应该更有助于大家的理解和学习,有需要的朋友们

      06-05

      阅读更多
    • PHP和MySQL Web开发(第4版)

      PHP和MySQL Web开发(第4版)

      《PHP和MySQL Web开发》将PHP开发与MySQL应用相结合,分别对PHP和MySQL做了深入浅出的分析,不仅介绍PHP和MySQL的一般概念,而且对PHP和MySQL的Web应用做了较全面的阐述,并包括几个经典且实用的例子

      大小:51.6 MB网站开发

      点击下载
    • PHP与MySQL高性能应用开发

      PHP与MySQL高性能应用开发

      PHP与MySQL高性能应用开发书中不仅讲解了OOP、设计模式,也讲解了如何进行性能优化和调试。甚至,还对于语言之外的代码重构进行了讲解,本书面向的对象是有一定PHP基础,但是又想深入学习的PHP开发者,欢迎免费下载

      大小:60.5 MBPHP开发

      点击下载
    • PHP、MySQL与JavaScript学习手册(第4版)

      PHP、MySQL与JavaScript学习手册(第4版)

      本书有借助面向对象的编程基础,深入学习PHP。研究MySQL,从数据库结构到复杂查询。掌握JavaScript语言,以及带有jQuery的增强功能。调用Ajax进行后台浏览器/服务器通信等,欢迎免费下载

      大小:76 MBPHP

      点击下载
    • PHP+MySQL动态网站开发从入门到精通

      PHP+MySQL动态网站开发从入门到精通

      《PHP+MySQL动态网站开发从入门到精通》本书循序渐进地介绍了PHP 7 MySQL 5.7开发动态网站的主要知识和技能,提供案例、课件、命令速查手册,让你看得懂、学得会、做得出,教你快速成为网站应用开发高手。

      大小:36.2 MB网站开发

      点击下载
    • PHP&MySQL跨设备网站开发实例精粹

      PHP&MySQL跨设备网站开发实例精粹

      这本书从易学实用的角度详细讲解了PHP、HTML5语法,MySQL数据库存取,网页之间的信息传递、表单的后端处理等,提供了丰富的网站开发范例,欢迎下载

      大小:80.9 MBPHP编程

      点击下载
    • MySQL 8 Cookbook

      MySQL 8 Cookbook

      MySQL 8的更新幅度在MySQL历史上可谓空前,增添很多重磅新特性——“数据字典”取消了已存在几十年的frm文件,将插件式数据库的重心偏向InnoDB,极大提高meta data的访问性能,并支持了DDL原子性

      大小:206.5 MBMySQL

      点击下载

    学习笔记