码迷,mamicode.com
首页 > 数据库 > 详细

线程安全地获取插入mysql的条目的id

时间:2014-09-06 21:11:53      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   数据   sp   c   数据库   sql   mysql   

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

 

线程安全地获取插入mysql的条目的id

标签:style   color   使用   数据   sp   c   数据库   sql   mysql   

原文地址:http://www.cnblogs.com/summer-cool/p/3959760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!