濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 輕松掌握MySQL函數(shù)中的last_insert_id()

輕松掌握MySQL函數(shù)中的last_insert_id()

熱門(mén)標(biāo)簽:手機(jī)外呼系統(tǒng)違法嗎 桂林云電銷(xiāo)機(jī)器人收費(fèi) 谷歌地圖標(biāo)注位置圖解 南通電銷(xiāo)外呼系統(tǒng)哪家強(qiáng) 東莞外呼企業(yè)管理系統(tǒng) 地圖簡(jiǎn)圖標(biāo)注 沈陽(yáng)智能外呼系統(tǒng)供應(yīng)商 清遠(yuǎn)申請(qǐng)400電話 如何選擇優(yōu)質(zhì)的外呼系統(tǒng)

前言

最近一個(gè)同事問(wèn)我,為什么last_insert_id()得到的結(jié)果與預(yù)期的不一樣呢,于是我就認(rèn)真的去研究的一下這個(gè)參數(shù),下面是關(guān)于last_insert_id()的詳細(xì)介紹,一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。

首先,舉個(gè)例子

wing@3306>show create table tt;
+-------+-----------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                           |
+-------+-----------------------------------------------------------------------------------------------------------------------+
| tt | CREATE TABLE `tt` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
# 沒(méi)有指定值的時(shí)候,last_insert_id()符合預(yù)期希望
wing@3306>insert into tt values();
Query OK, 1 row affected (0.00 sec)
wing@3306>select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|    1 |
+------------------+
1 row in set (0.00 sec)
wing@3306>insert into tt values();
Query OK, 1 row affected (0.00 sec)
wing@3306>select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|    2 |
+------------------+
1 row in set (0.00 sec)
# what?不是應(yīng)該是5么,為什么是第一個(gè)插入的值3?last_insert_id開(kāi)始有一點(diǎn)不符合預(yù)期了。。
wing@3306>insert into tt values(),(),();
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
wing@3306>select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|    3 |
+------------------+
1 row in set (0.00 sec)
wing@3306>insert into tt values(),(),();
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
wing@3306>select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|    6 |
+------------------+
1 row in set (0.00 sec)
# 納尼?按照預(yù)期不是10么?為什么還是之前的6?last_insert_id()我不懂你啊。。
wing@3306>insert into tt values(10);
Query OK, 1 row affected (0.01 sec)
wing@3306>select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|    6 |
+------------------+
1 row in set (0.00 sec)

其次,研究一下

查閱MySQL官方文檔,真的太重要了。。。

官方出處:http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_last-insert-id

官方文檔原話:

With no argument, LAST_INSERT_ID() returns a 64-bit value representing the first automatically generated value successfully inserted for an AUTO_INCREMENT column as a result of the most recently executed INSERT statement.

翻譯:

沒(méi)有參數(shù)的last_insert_id()返回的是最近一次針對(duì)autoincrement列執(zhí)行的INSERT語(yǔ)句的第一個(gè)自動(dòng)生成的值。

官方文檔原話:

If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only. The reason for this is to make it possible to reproduce easily the same INSERT statement against some other server.

翻譯:

如果你在單條INSERT語(yǔ)句中插入多個(gè)值,那么last_insert_id()返回的是該INSERT語(yǔ)句第一個(gè)自動(dòng)生成的值。

然后,剖析一下

請(qǐng)認(rèn)真閱讀上述翻譯中的黑色字體,牢記last_insert_id()的約束。

為什么插入指定的值,last_insert_id()就失效了呢?

官方文檔明明說(shuō)了,是自動(dòng)生成的值啊,不是你指定的值啊,是由autoincremnt計(jì)數(shù)器自己生成的才能被last_insert_id()追蹤到哇。。

為什么多值插入的時(shí)候,顯示的是第一條插入值啊,last不是最后一個(gè)值的意思么啊啊啊。。

官方文檔明明說(shuō)了,是最近一次的INSERT語(yǔ)句**自動(dòng)生成的第一個(gè)值**哇哇哇。。

總結(jié)

記住last_insert_id()的約束。最近一次INSERT語(yǔ)句在autpincrement列上自動(dòng)生成的第一個(gè)值??偨Y(jié)的這句話比翻譯的那句話感覺(jué)順口多了==

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

您可能感興趣的文章:
  • Mysql中LAST_INSERT_ID()的函數(shù)使用詳解
  • Mysql字符串截取函數(shù)SUBSTRING的用法說(shuō)明
  • MySQL replace函數(shù)替換字符串語(yǔ)句的用法
  • FROM_UNIXTIME 格式化MYSQL時(shí)間戳函數(shù)
  • mysql獲取字符串長(zhǎng)度函數(shù)(CHAR_LENGTH)
  • Mysql 數(shù)字類(lèi)型轉(zhuǎn)換函數(shù)
  • MySQL中的LOCATE和POSITION函數(shù)使用方法
  • mysql 強(qiáng)大的trim() 函數(shù)
  • Mysql的GROUP_CONCAT()函數(shù)使用方法
  • MySQL中g(shù)roup_concat函數(shù)深入理解

標(biāo)簽:成都 內(nèi)蒙古 臨沂 天津 重慶 湖州 常德 貴州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《輕松掌握MySQL函數(shù)中的last_insert_id()》,本文關(guān)鍵詞  輕松,掌握,MySQL,函數(shù),中的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《輕松掌握MySQL函數(shù)中的last_insert_id()》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于輕松掌握MySQL函數(shù)中的last_insert_id()的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    北京市| 富川| 班玛县| 股票| 蒲城县| 高碑店市| 垣曲县| 玉溪市| 黄冈市| 呼和浩特市| 韶关市| SHOW| 垦利县| 丰台区| 延津县| 边坝县| 新竹县| 凤城市| 沙洋县| 水城县| 江达县| 囊谦县| 饶阳县| 萍乡市| 嘉定区| 新乐市| 海淀区| 松原市| 裕民县| 达州市| 荥经县| 铜陵市| 广宗县| 大竹县| 额济纳旗| 迁西县| 驻马店市| 长武县| 临西县| 桐乡市| 杭州市|