我试图让一些MSSQL代码也在MYSQL上运行,我只是打了这个地雷。 Google表示,通常的方法是简单地执行插入操作,然后选择last_insert_ID()来查找写入的内容。
但这并不会让我在多用户环境中变得安全。那里有一个狭窄的窗口,其他用户可以插入一些东西并导致错误的返回值。如何安全插入并获取插入记录的密钥?
答案 0 :(得分:30)
https://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id:
生成的ID在每个连接的服务器中维护。这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。此值不受其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值。此行为可确保每个客户端都可以检索自己的ID,而无需关心其他客户端的活动,也无需锁定或事务。
因此,除非您的多个用户的插入恰好是通过相同的数据库连接进行的,否则您无需担心。