数据库插入后的$ this-> {Model} - > id是否始终返回上次插入记录的ID

时间:2011-07-08 13:22:12

标签: php cakephp cakephp-1.3

Cakephp查询 SELECT LAST_INSERT_ID()AS insertID 在插入之后获取最后一个插入ID以获取插入记录的'id',但是如果在其他并行进程中在执行上述查询之前添加了另一条记录,该怎么办?

1 个答案:

答案 0 :(得分:1)

在MySQL中,LAST_INSERT_ID()是特定于连接的,否则会导致许多不必要的后果。如果另一个进程添加记录,而不是使用另一个连接,那么LAST_INSERT_ID()的返回值不会因当前连接而改变。

我不认为它在其他RDBMS中的处理方式不同,您也没有提到您使用的数据库系统。

用MySQL Doc的话来说:

  

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

有关详细信息,请参阅MySQL文档。