【发布时间】:2018-10-05 05:12:18
【问题描述】:
MySQL 具有获取最后插入的LAST_INSERT_ID(); 函数。
但这不安全:如果我运行一些查询然后得到 LAST_INSERT_ID() 并且在这两个查询之间执行另一个查询我会得到错误的 id。
这可能发生在使用同一连接的多个线程中,或者使用 pconnect(为多个用户保持连接)
是否有安全的方法来获取我想要 100% 的 ID?
谢谢
【问题讨论】:
-
回答:除非您有来自同一连接的多个线程执行插入操作,否则您不必担心。
-
是的,这是我的问题,我有多个具有相同连接的进程,在副本中没有多个线程的答案
-
完成,谢谢,如果不好可以编辑
-
我没有答案。我在想获得写锁可能会起作用,但写锁只会阻塞其他会话,而不是共享同一连接的多个线程。也许你应该尽量避免这种用例的发生。
-
您需要在您的应用程序中实现互斥,以防止它们相互干扰。或者每个线程都应该使用自己的连接。
标签: mysql