亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2016年12月15日 09:15:34   投稿:daisy  
相信大家應(yīng)該都知道Mysql函數(shù)可以實(shí)現(xiàn)許多我們需要的功能,這篇文章介紹的Mysql函數(shù)Last_insert_id()就是其中之一,文章通過(guò)一個(gè)例子展開(kāi)來(lái)講,應(yīng)該更有助于大家的理解和學(xué)習(xí),有需要的朋友們下面來(lái)一起看看吧。

前言

最近一個(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è)值。總結(jié)的這句話比翻譯的那句話感覺(jué)順口多了==

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

相關(guān)文章

  • Navicat for Mysql 字段注釋中文亂碼問(wèn)題及解決

    Navicat for Mysql 字段注釋中文亂碼問(wèn)題及解決

    這篇文章主要介紹了Navicat for Mysql 字段注釋中文亂碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • mysql 5.7 安裝配置方法圖文教程

    mysql 5.7 安裝配置方法圖文教程

    這篇文章主要為大家分享了mysql 5.7 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL中的常用函數(shù)

    MySQL中的常用函數(shù)

    這篇文章主要介紹了MySQL中的常用函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • 圖文詳解MySQL中的主鍵與事務(wù)

    圖文詳解MySQL中的主鍵與事務(wù)

    這篇文章主要給大家介紹了關(guān)于MySQL中主鍵與事務(wù)的相關(guān)資料,主鍵與事務(wù)是我們使用mysql中經(jīng)常遇到的,文中通過(guò)圖文以及實(shí)例代碼介紹的很詳細(xì),需要的朋友可以參考下
    2021-05-05
  • MySQL多表連接的入門(mén)實(shí)例教程

    MySQL多表連接的入門(mén)實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于MySQL多表連接的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • MySQL高可用與擴(kuò)展方式

    MySQL高可用與擴(kuò)展方式

    本文深入探討了MySQL的高可用和擴(kuò)展策略,包括主從復(fù)制與讀寫(xiě)分離、MySQL集群與負(fù)載均衡、分布式數(shù)據(jù)庫(kù)架構(gòu)以及數(shù)據(jù)庫(kù)的水平與垂直擴(kuò)展,每個(gè)主題都提供了詳細(xì)的代碼示例,幫助讀者理解和應(yīng)用這些技術(shù),通過(guò)這些策略,可以有效地提高M(jìn)ySQL數(shù)據(jù)庫(kù)的性能、吞吐量和可用性
    2025-03-03
  • mysql5.7.18安裝并修改初始密碼的方法

    mysql5.7.18安裝并修改初始密碼的方法

    這篇文章主要為大家詳細(xì)介紹了Mysql5.7安裝并修改初始密碼的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MYSQL必知必會(huì)讀書(shū)筆記第十和十一章之使用函數(shù)處理數(shù)據(jù)

    MYSQL必知必會(huì)讀書(shū)筆記第十和十一章之使用函數(shù)處理數(shù)據(jù)

    這篇文章主要介紹了MYSQL必知必會(huì)讀書(shū)筆記第十和十一章之使用函數(shù)處理數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • MySQL登錄、訪問(wèn)及退出操作實(shí)戰(zhàn)指南

    MySQL登錄、訪問(wèn)及退出操作實(shí)戰(zhàn)指南

    當(dāng)我們要使用mysql時(shí),一定要了解mysql的登錄、訪問(wèn)及退出,下面這篇文章主要給大家介紹了關(guān)于MySQL登錄、訪問(wèn)及退出操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • mysql 5.7更改數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)位置的解決方法

    mysql 5.7更改數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)位置的解決方法

    隨著MySQL數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)逐漸變大,已經(jīng)將原來(lái)的存儲(chǔ)數(shù)據(jù)的空間占滿了,導(dǎo)致mysql已經(jīng)鏈接不上了。所以要給存放的數(shù)據(jù)換個(gè)地方,下面小編給大家分享mysql 5.7更改數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)位置的解決方法,一起看看吧
    2017-04-04

最新評(píng)論