美文网首页
last_insert_id的坑

last_insert_id的坑

作者: 奋斗live | 来源:发表于2018-07-04 20:19 被阅读0次

我们在使用mysql时,如果想获取最新的自增id,可使用 last_insert_id 进行获取。

不过使用这个的时候要多注意点,因为这个在高并发的时候,会出错。

比如如下错误。

例子:

比如A表有userId自增,B表有blogId自增
当我们先向A表写入,再向B表写入,再执行last_insert_id 可能会获取到的是userId的自增id,而不是blogId。

以php代码为例
php可以使用 mysql_query()进行执行
以下是php官方的定义

resource mysql_query ( string $query [, resource $link_identifier = NULL ] )

很重要的一点就是,使用mysql_query的时候,这个 $link_identifier(也就是连接符)一定不能省略,不然执行以下sql语句的时候,有时就会获取到错误的自增id,就像前面说的,会获取到userId

mysql_query("select last_insert_id")

如果加上以下的resource,则会获取到正确的自增id

mysql_query("select last_insert_id",resource $link_identifier)

这个resource就代表使用的是共同的数据库句柄资源。我们插入到user表的时候,要使用这个句柄资源,查询自增id的时候,也要使用这同一个数据库句柄资源。这样获取的id就不会出错了。

相关文章

网友评论

      本文标题:last_insert_id的坑

      本文链接:https://www.haomeiwen.com/subject/zgeyuftx.html