zoukankan      html  css  js  c++  java
  • 线程安全地获取插入mysql的条目的id

    在往mysql中插入条目时有时会希望能得到该插入条目的id,一种方式是再执行一个select语句条件为max(id)来获取,但这种形式在并发环境里并不是线程安全的,因为在你完成插入到再执行一个select获取最大id之间可能已经有另一个条目被插入。

    一种线程安全的解决方式是采用select LAST_INSERT_ID()这个语句,它返回本次链接(每个数据库链接由一个线程承担)中第一次插入的条目的id

    eg.

    (1)、在连接1中向A表插入一条记录,A表包含一个auto_increment类型的id。
     
    (2)、在连接2中向A表再插入一条记录。
     
    (3)、结果:在连接1中执行select LAST_INSERT_ID()得到的结果和连接2中执行select LAST_INSERT_ID()的结果是不同的;而在两个连接中执行select max(id)的结果是相同的。

    此外,使用select last_insert_id()时要注意,当一次插入多条记录时,只是获得第一次插入的id值,务必注意!

  • 相关阅读:
    TP5.1 遇见问题整理
    PDO 基础
    php7 连接 mysql 的两种方式
    [php] 添加接口访问日志(文件)
    curl 向远程服务器传输file文件
    VBoxManage
    linux 系统下安装多个php版本
    vim中文乱码问题
    vim 翻页命令
    php list()函数
  • 原文地址:https://www.cnblogs.com/summer-cool/p/3959760.html
Copyright © 2011-2022 走看看