2011-07-08 33 views
1

Cakephp查詢 SELECT LAST_INSERT_ID()AS insertID 在插入後獲取最後一個插入標識以獲取插入記錄的'id',但是如果在其他並行處理中執行上述查詢之前又添加了另一條記錄呢?

回答

1

在MySQL中,LAST_INSERT_ID()是連接特定的,否則會導致許多不需要的後果。如果另一個進程添加記錄,而不是使用另一個連接,那麼對於當前連接,LAST_INSERT_ID()的返回值不會更改。

我不認爲它在其他RDBMS中的處理方式不同,並且您沒有提及您使用的數據庫系統。

在MySQL文件的話:

已生成被保持在基於每個連接的基礎上的服務器的ID。這意味着該函數返回給定客戶端的值是爲該客戶端影響AUTO_INCREMENT列的最新語句生成的第一個AUTO_INCREMENT值。即使它們生成自己的AUTO_INCREMENT值,該值也不會受到其他客戶端的影響。此行爲可確保每個客戶端都可以檢索自己的ID,而不必關心其他客戶端的活動,而無需鎖定或事務。

有關更多信息,請參閱MySQL文檔。

+0

我想達幫助。 – shahalpk

+0

是否有任何其他方式來檢索插入的記錄,除了這個在cakephp()調用save()之後 – shahalpk