在往mysql中插入條目時有時會但願能獲得該插入條目的id,一種方式是再執行一個select語句條件爲max(id)來獲取,但這種形式在併發環境裏並非線程安全的,由於在你完成插入到再執行一個select獲取最大id之間可能已經有另外一個條目被插入。mysql
一種線程安全的解決方式是採用select LAST_INSERT_ID()這個語句,它返回本次連接(每一個數據庫連接由一個線程承擔)中第一次插入的條目的idsql
eg.數據庫
(1)、在鏈接1中向A表插入一條記錄,A表包含一個auto_increment類型的id。
(2)、在鏈接2中向A表再插入一條記錄。
(3)、結果:在鏈接1中執行select LAST_INSERT_ID()獲得的結果和鏈接2中執行select LAST_INSERT_ID()的結果是不一樣的;而在兩個鏈接中執行select max(id)的結果是相同的。安全
此外,使用select last_insert_id()時要注意,當一次插入多條記錄時,只是得到第一次插入的id值,務必注意!併發