[英]LAST_INSERT_ID after restarting MySQL
我嘗試在插入新記錄后通過以下語句檢索LAST_INSERT_ID
,它工作正常。
SELECT LAST_INSERT_ID();
問題
在表中插入新記錄並重新啟動MySQL Server,然后嘗試檢索LAST_INSERT_ID
,它的值為0
!
LAST_INSERT_ID
僅在重新啟動MySQL或重新啟動系統之前有效嗎?
任何幫助,將不勝感激。
如MySQL文檔所述 ,
生成的ID在每個連接的服務器中維護。 這意味着函數返回給定客戶端的值是為該客戶端影響AUTO_INCREMENT列的最新語句生成的第一個AUTO_INCREMENT值。 此值不受其他客戶端的影響,即使它們生成自己的AUTO_INCREMENT值。 此行為可確保每個客戶端都可以檢索自己的ID,而無需關心其他客戶端的活動,也無需鎖定或事務。
這意味着 - 在重新啟動您的語句集后,沒有任何語句影響AUTO_INCREMENT值,因此該值未定義。
請參見LAST_INSERT_ID
手冊頁中的以下文本:
The ID that was generated is maintained in the server on a per-connection basis.
如果你重新啟動服務器,或斷開並重新連接againg,那么你沒有使用與插入時相同的連接,這就是你得到0
的原因
正如已經根據MySQL參考手冊所述 : function_last-insert-id :
生成的ID在每個連接的服務器中維護。 這意味着函數返回給定客戶端的值是為該客戶端影響AUTO_INCREMENT列的最新語句生成的第一個AUTO_INCREMENT值。
要獲得所需內容,只需創建一個新查詢:
SELECT MAX(ID) FROM ExampleTable;
以防您無法按預期方式使用LAST_INSERT_ID 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.