關於擷取上一步insert的SQL語句的id的問題

來源:互聯網
上載者:User
用mysql_insert_id函數的話,當錯作流程是:A頁面插入了一條,id=1,B頁面插入了一條,id=2,A頁面執行mysql_insert_id擷取到的id是1還是2?


回複討論(解決方案)

A頁面當然是 1

A頁面當然是 1


我可以理解為是返回`當前頁面`的上一步執行的inser語句的id嗎,w3school上說得不太清楚

如果不是1 ,就麻煩了,那麼寫所有的東西,都要操心並發的問題了。

可以對mysql伺服器發送查詢

mysql_query("select  LAST_INSERT_ID()");
如果是一萬個頁面呢?再如果是重要的事務性操作呢?查詢資料庫比較靠譜

A頁面的mysql_insert_id返回是1

MySQL的mysql_insert_id是針對MySQL進程來進行的,對於伺服器來說mysql_query都是一個原子操作,不是MAX(id),就算在大並發的情況下也不會出現不準確的情況。

可以看看MySQL的

mysql_insert_id是這麼定義的

my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
{
return mysql->;last_used_con->;insert_id;
}

MYSQL參數是個結構體,裡麵包括資料庫連結和一些當前資料庫連結的狀態值,

其中在MYSQL結構體裡面有insert_id,mysql_insert_id函數返回的就是結構體裡面的找個值。

肯定是1,自己可以實際操作一下,就明白了

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.