|
的id 是 unsigned int,或者 bigint 的 。那么,可能是返回的是錯(cuò)誤的。而要用 LAST_INSERT_ID() 代替。
還有些朋友,返回的都是 0,不知道怎么回事,其實(shí) LAST_INSERT_ID() 返回的是 AUTO_INCREMENT 的 ID。
如果,表結(jié)構(gòu)中,沒有設(shè)置,AUTO_INCREMENT 那么也無法返回。
還有些人,還是返回為 0. 那么你就要檢查一下,是不是 用了 insert delay 的功能。這種情況下,是不會(huì)返回即時(shí)的返回id值的。
很多人喜歡用 select max(id) ... 來替換這個(gè)last_insert_id, 實(shí)際上, select max(id) 是非線程安全的,很有可能,
其他線程插入了新的數(shù)據(jù),你就查不到你上次插入的 ID 了。而last_insert_id 是 和 一個(gè)mysql connect 相對應(yīng)的,也就是
和你的當(dāng)前線程相對應(yīng)的,不會(huì)受其他線程的干擾。如果你的數(shù)據(jù)庫發(fā)生了一些奇怪的錯(cuò)誤,比如,本來是要更新A 數(shù)據(jù)的信息的,
結(jié)果 B 數(shù)據(jù)被更新了,而且是有時(shí)候正確,有時(shí)候不正確,人多的時(shí)候會(huì)非常的不正確。就要看看是不是 用了 select max(id)
php技術(shù):MYSQL 小技巧 -- LAST_INSERT_ID,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。