簡體   English   中英

重新啟動MySQL后的LAST_INSERT_ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM