溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql中LAST_INSERT_ID()的作用是什么

發(fā)布時(shí)間:2021-08-13 17:05:58 來源:億速云 閱讀:267 作者:Leah 欄目:數(shù)據(jù)庫

本篇文章為大家展示了mysql中LAST_INSERT_ID()的作用是什么,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。


 
首先看mysql中的LAST_INSERT_ID()的官方說法:
 
LAST_INSERT_ID()自動(dòng)返回最后一個(gè)INSERT或UPDATE查詢中AUTO_INCREMENT列設(shè)置的第一個(gè)表發(fā)生的值。
MySQL的LAST_INSERT_ID的注意事項(xiàng):
 
第一、查詢和插入所使用的Connection對(duì)象必須是同一個(gè)才可以,否則返回值是不可預(yù)料的。
第二、LAST_INSERT_ID是與表無關(guān)的,如果向表a插入數(shù)據(jù)后再向表b插入數(shù)據(jù),LAST_INSERT_ID返回表b的Id值。  www.2cto.com  
第三、假如你使用一條INSERT語句插入多個(gè)行,  LAST_INSERT_ID() 只返回插入的第一行數(shù)據(jù)時(shí)產(chǎn)生的值。
第四、假如你使用 INSERT IGNORE而記錄被忽略,則AUTO_INCREMENT 計(jì)數(shù)器不會(huì)增量,而 LAST_INSERT_ID() 返回0, 這反映出沒有插入任何記錄。
 
根據(jù)這四條原則,我們討論的高并發(fā)網(wǎng)站訪問時(shí)的插入后取自增長值其實(shí)主要是跟第一條規(guī)則和第二條規(guī)則有關(guān)。即要保證LAST_INSERT_ID的正確性,必須同一個(gè)connection,并且LAST_INSERT_ID要緊跟在insert中執(zhí)行。所以如果是緩存池公用connection可能會(huì)出問題,多線程操作在insert后面由執(zhí)行了別的insert時(shí)也會(huì)出問題。
 
而php的數(shù)據(jù)庫連接本身是頁面級(jí)的,這樣就保證了不會(huì)出現(xiàn)緩沖池的情況,然后php頁面執(zhí)行本身也是單線程的,這樣就保證了順序編寫的LAST_INSERT_ID肯定是緊跟在insert之后執(zhí)行的,中間不會(huì)有別的insert執(zhí)行。  www.2cto.com  
 
綜上所述,php的頁面級(jí)、單線程其實(shí)已經(jīng)保證了的LAST_INSERT_ID天然就是正確的,跟高并發(fā)并沒有關(guān)系。即php中,mysql的LAST_INSERT_ID總是正確的,隨便用把,沒有問題的。

上述內(nèi)容就是mysql中LAST_INSERT_ID()的作用是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI