我可以信任mysql_insert_id()来返回正确的值,多线程的偏执狂

Ted*_*Ted 1 php mysql sql multithreading mysql-insert-id

我做了一个函数,在一个表中插入一个新行,在调用一个INSERT语句到mysql之后,然后我做了一些检查,然后检查了它的值mysql_insert_id().

我想要保持安静,因为我知道在得到结果之前,另一个线程无法插入,插入一行mysql_insert_id().

我敢打赌,它应该是安全的,但我在问,因为这个可能是灾难性的.

Bli*_*itZ 5

来自manual:

生成的ID在每个连接的基础上在服务器中维护.这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值.此值不受其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值.此行为可确保每个客户端都可以检索自己的ID,而无需关心其他客户端的活动,也无需锁定或事务.

因此,如果您的线程将使用单独的连接,它们将获得不同的插入ID.