我有一个插入查询。我想在插入后获取它的id,我在php中使用了mysql_insert_id()。
现在我想到的问题是,如果两个人在两个不同的线程中使用插入查询。所以会有4个原子查询。
$query="INSERT INTO `info`() VALUES ()";
mysql_query($query);
echo mysql_insert_id();
如果先执行两个insert查询,然后执行mysql_insert_id()。所以我会得到最近的文章的id和0 ..
那么会有数据不一致吗?
答案 0 :(得分:2)
使用的LAST_INSERT_ID()函数是特定于连接的,因此所提供的示例没有问题。
没有参数,LAST_INSERT_ID()返回一个BIGINT UNSIGNED(64位)值,表示为AUTO_INCREMENT列成功插入的第一个自动生成的值。
生成的 ID是基于每个连接在服务器中维护的。这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。
然而,这个"一般问题"使用Transactions 解决:咳嗽: