《Mysql必讀Mysql中LAST_INSERT_ID()的函數使用詳解》要點:
本文介紹了Mysql必讀Mysql中LAST_INSERT_ID()的函數使用詳解,希望對您有用。如果有疑問,可以聯系我們。
最近和Sobin在做一個精品課程的項目,因為用到一個固定的id作為表間關聯,所以在前一個表插入數據后要把插入數據生成的自增id傳遞給下一個表.研究了一番決定使用Mysql提供了一個LAST_INSERT_ID()的函數.MYSQL實例
簡單說來,便是這個函數將返回插入的那條記錄在表中自增的那個字段的值,一般我們都給那個自增字段命名為ID.這樣就可以返回剛插入的記錄的ID值了.MYSQL實例
一個簡單的例子:MYSQL實例
這個函數是基于connection的,也就是不會被其他客戶端的connection影響到,所以結果是準確的.如果使用select max(id) from table,在高密度的插入哀求下,是有可能出問題的,返回錯誤值MYSQL實例
LAST_INSERT_ID闡明MYSQL實例
從名字可以看出,LAST_INSERT_ID即為最后插入的ID值,根據MySQL的官方手冊說明,它有2種使用辦法MYSQL實例
一是不帶參數:LAST_INSERT_ID(),這種辦法和AUTO_INCREMENT屬性一起使用,當往帶有‘AUTO_INCREMENT'屬性字段的表中新增記錄時,LAST_INSERT_ID()即返回該字段的值,大家可試下(我已經驗證過);
二是帶有表達式:如上面介紹的LAST_INSERT_ID(value+1),它返回的是表達式的值,即‘value+1';
##################################
LAST_INSERT_ID() 自動返回最后一個INSERT或 UPDATE 查詢中 AUTO_INCREMENT列設置的第一個表發生的值.MYSQL實例
MySQL的LAST_INSERT_ID的注意事項:MYSQL實例
第一、查詢和插入所使用的Connection對象必需是同一個才可以,否則返回值是不可預料的.MYSQL實例
mysql> SELECT LAST_INSERT_ID();MYSQL實例
??????? -> 100MYSQL實例
使用這函數向一個給定Connection對象返回的值是該Connection對象產生對影響AUTO_INCREMENT列的最新語句第一個AUTO_INCREMENT值的.這個值不能被其它Connection對象的影響,即它們產生它們本身的AUTO_INCREMENT值.MYSQL實例
第二、LAST_INSERT_ID 是與table無關的,如果向表a插入數據后,再向表b插入數據,LAST_INSERT_ID返回表b中的Id值.MYSQL實例
第三、 假如你使用一條INSERT語句插入多個行,? LAST_INSERT_ID() 只返回插入的第一行數據時發生的值.其原因是這使依靠其它服務器復制同樣的 INSERT語句變得簡單.MYSQL實例
mysql> INSERT INTO t VALUESMYSQL實例
??? -> (NULL, ‘Mary'), (NULL, ‘Jane'), (NULL, ‘Lisa');MYSQL實例
mysql> SELECT * FROM t;MYSQL實例
| id | name |MYSQL實例
+―-+――+MYSQL實例
|? 1 | Bob? |MYSQL實例
|? 2 | Mary |MYSQL實例
|? 3 | Jane |MYSQL實例
|? 4 | Lisa |MYSQL實例
mysql> SELECT LAST_INSERT_ID(); //這便是我要說明的關鍵問題.MYSQL實例
| LAST_INSERT_ID() |MYSQL實例
|??????????????? 2 |MYSQL實例
雖然將3 個新行插入 t, 對這些行的第一行發生的 ID 為 2, 這也是 LAST_INSERT_ID()返回的值.MYSQL實例
以上所述便是本文的全部內容了,希望大家能夠喜歡.MYSQL實例
請您花一點時間將文章分享給您的朋友或者留下評論.我們將會由衷感激您的支持!MYSQL實例
《Mysql必讀Mysql中LAST_INSERT_ID()的函數使用詳解》是否對您有啟發,歡迎查看更多與《Mysql必讀Mysql中LAST_INSERT_ID()的函數使用詳解》相關教程,學精學透。維易PHP學院為您提供精彩教程。