LAST_INSERT_ID
自動(dòng)返回最后一個(gè) INSERT 或 UPDATE 操作為 AUTO_INCREMENT 列設置的第一個(gè)發(fā)生的值
LAST_INSERT_ID是基于單個(gè)connection的, 不可能被其它的客戶(hù)端連接改變。
可以用 SELECT LAST_INSERT_ID(); 查詢(xún)LAST_INSERT_ID的值.
使用單INSERT語(yǔ)句插入多條記錄, LAST_INSERT_ID只返回插入的第一條記錄產(chǎn)生的值. 比如
mysql> INSERT INTO t VALUES (NULL, 'aaaa'), (NULL, 'bbbb'), (NULL, 'cccc');
mysql> SELECT LAST_INSERT_ID();
ID 1 是在插入第一條記錄aaaa 時(shí)產(chǎn)生的.
LAST_INSERT_ID 是與table無(wú)關(guān)的,如果向表a插入數據后,再向表b插入數據,LAST_INSERT_ID會(huì )改變。
一般情況下獲取剛插入的數據的id,使用select max(id) from table 是可以的。
但在多線(xiàn)程情況下,就不行了。在多用戶(hù)交替插入數據的情況下max(id)顯然不能用。
這就該使用LAST_INSERT_ID了,因為L(cháng)AST_INSERT_ID是基于Connection的,只要每個(gè)線(xiàn)程都使用獨立的Connection對象,LAST_INSERT_ID函數將返回該Connection對AUTO_INCREMENT列最新的insert or update操作生成的第一個(gè)record的ID。這個(gè)值不能被其它客戶(hù)端(Connection)影響,保證了你能夠找回自己的 ID 而不用擔心其它客戶(hù)端的活動(dòng),而且不需要加鎖。
聯(lián)系客服