小编典典

我可以信任mysql_insert_id()返回正确的值,多线程妄想症

sql

我做了一个在表中插入新行的函数,在INSERTmysql中调用一条语句后,我进行了一些检查,然后检查的值mysql_insert_id()

我想保持安静,因为 在得到结果之前,不可能有另一个线程插入行插入该线程mysql_insert_id()

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


阅读 161

收藏
2021-04-14

共1个答案

小编典典

来自manual

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

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

2021-04-14