同时查询的数据不一致

时间:2014-06-06 09:37:31

标签: php mysql sql database multithreading

我有一个插入查询。我想在插入后获取它的id,我在php中使用了mysql_insert_id()。

现在我想到的问题是,如果两个人在两个不同的线程中使用插入查询。所以会有4个原子查询。

$query="INSERT INTO `info`()  VALUES ()";
mysql_query($query);
echo mysql_insert_id();

如果先执行两个insert查询,然后执行mysql_insert_id()。所以我会得到最近的文章的id和0 ..

那么会有数据不一致吗?

1 个答案:

答案 0 :(得分:2)

使用的LAST_INSERT_ID()函数是特定于连接的,因此所提供的示例没有问题。

  

没有参数,LAST_INSERT_ID()返回一个BIGINT UNSIGNED(64位)值,表示为AUTO_INCREMENT列成功插入的第一个自动生成的值。

     

生成的 ID是基于每个连接在服务器中维护的。这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。

然而,这个"一般问题"使用Transactions 解决:咳嗽: