Cakephp查询 SELECT LAST_INSERT_ID()AS insertID 在插入之后获取最后一个插入ID以获取插入记录的'id',但是如果在其他并行进程中在执行上述查询之前添加了另一条记录,该怎么办?
答案 0 :(得分:1)
在MySQL中,LAST_INSERT_ID()
是特定于连接的,否则会导致许多不必要的后果。如果另一个进程添加记录,而不是使用另一个连接,那么LAST_INSERT_ID()
的返回值不会因当前连接而改变。
我不认为它在其他RDBMS中的处理方式不同,您也没有提到您使用的数据库系统。
用MySQL Doc的话来说:
生成的ID基于每个连接在服务器中维护。这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。此值不受其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值。此行为可确保每个客户端都可以检索自己的ID,而无需关心其他客户端的活动,也无需锁定或事务。
有关详细信息,请参阅MySQL文档。