日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用MySQL的LAST_INSERT_ID--转

發布時間:2025/4/5 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用MySQL的LAST_INSERT_ID--转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LAST_INSERT_ID

自動返回最后一個 INSERT 或 UPDATE 操作為 AUTO_INCREMENT?列設置的第一個發生的值. 參考這里?

The ID that was generated is maintained in the server on a?per-connection basis.

LAST_INSERT_ID是基于單個connection的,?不可能被其它的客戶端連接改變。

?可以用 SELECT LAST_INSERT_ID(); 查詢LAST_INSERT_ID的值.

Important: If you insert multiple rows using a single?INSERT?statement,?LAST_INSERT_ID()?returns the value generated for the?first?inserted row?only.

使用單INSERT語句插入多條記錄,? LAST_INSERT_ID只返回插入的第一條記錄產生的值. 比如

  • mysql>?INSERT?INTO?t?VALUES?(NULL,?'aaaa'),?(NULL,?'bbbb'),?(NULL,?'cccc'); ??
  • mysql>?SELECT?*?FROM?t; ??
  • +----+------+???
  • |?id?|?name?| ??
  • +----+------+???
  • |??1?|?Bob??| ??
  • |??2?|?aaaa?| ??
  • |??3?|?bbbb?| ??
  • |??4?|?cccc?| ??
  • +----+------+???
  • mysql>?SELECT?LAST_INSERT_ID(); ??
  • +------------------+???
  • |?LAST_INSERT_ID()?| ??
  • +------------------+???
  • |????????????????2?| ??
  • +------------------+??
  • ID 2 是在插入第一條記錄aaaa 時產生的.

    LAST_INSERT_ID 是與table無關的,如果向表a插入數據后,再向表b插入數據,LAST_INSERT_ID會改變。

    一般情況下獲取剛插入的數據的id,使用select max(id) from table 是可以的。

    但在多線程情況下,就不行了。在多用戶交替插入數據的情況下max(id)顯然不能用。

    這就該使用LAST_INSERT_ID了,因為LAST_INSERT_ID是基于Connection的,只要每個線程都使用獨立的Connection對象,LAST_INSERT_ID函數將返回該Connection對AUTO_INCREMENT列最新的insert or update操作生成的第一個record的ID。這個值不能被其它客戶端(Connection)影響,保證了你能夠找回自己的 ID 而不用擔心其它客戶端的活動,而且不需要加鎖。

    ?

    原文:http://wangcheng.iteye.com/blog/54293

    轉載于:https://www.cnblogs.com/davidwang456/p/3945533.html

    總結

    以上是生活随笔為你收集整理的使用MySQL的LAST_INSERT_ID--转的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。