我做了一个在表中插入新行的函数,在INSERTmysql中调用一条语句后,我进行了一些检查,然后检查的值mysql_insert_id()。
INSERT
mysql_insert_id()
我想保持安静,因为 在得到结果之前,不可能有另一个线程插入行插入该线程mysql_insert_id()。
我敢打赌,它应该是安全的,但是我要问,因为这可能是灾难性的。
来自manual:
manual
生成的ID会在每个连接的基础上保留在服务器中。这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。即使其他客户端生成自己的AUTO_INCREMENT值,该值也不会受到其他客户端的影响。此行为可确保每个客户端都可以检索自己的ID,而不必担心其他客户端的活动,也不需要锁或事务。
因此,如果您的线程将使用单独的连接,则它们将获得不同的插入ID。