在mysql操作中執行insert,是沒有自增id返回的,這就對於后續編寫邏輯造成了很大不便。
其實有幾種方法可以做到insert后直接獲取到自增id。
1.執行select max(id);
原理是直接查找數據庫的最大id,壞處:一旦並發量大、數據量多時就會出現性能低、查找錯誤的情況。
2.執行selsct LAST_INSERT_ID();
原理是因為LAST_INSERT_ID是基於Connection的,只要每個線程都使用獨立的Connection對象,LAST_INSERT_ID函數 將返回該Connection對AUTO_INCREMENT列最新的insert or update*操作生成的第一個record的ID。這個值不會被其它客戶端(Connection)影響,保證了你能夠找回自己的 ID 而不用擔心其它客戶端的活動,而且不需要加鎖。使用單INSERT語句插入多條記錄, LAST_INSERT_ID返回一個列表。
要注意的是,當你執行多個insert時,它會返回第一個自增id。
參考: