一段代碼執行了2條sql,寓意是想讓兩個sql相呼應,但是今天出現了點問題,大神請看內容

來源:互聯網
上載者:User
因為資料庫欄位挺多,我就打個比方
詳細資料表 list
使用者表 user 有一個欄位 num

我執行一個方法,該方法每次往list中插入一條資料時,同時往user表的num+1

上個月大概有20W的註冊使用者,我分別把這些使用者的list表中的數量求了出來,並且與user表中num做了對比。

對比結果是大概有70人的list資料的數量,比num所記錄的數量少大概10條左右。

因為方法是先後執行的,大概是這樣的先後順序
public function test(){
insert $data;
update num+1;
}

先往list裡面插入,後更新的user num欄位


我想問一下,想這種資料不同步的情況都會在什麼情況下發生。求別讓貼代碼。


回複討論(解決方案)

你這個應該要使用 事務
當 insert $data 或 update num+1 失敗時就撤銷操作


是否用了交易處理? 是否判斷插入成功後再更新欄位
insert $data;失敗了但仍然執行了update num+1;就會不一致啦

是否用了交易處理? 是否判斷插入成功後再更新欄位
insert $data;失敗了但仍然執行了update num+1;就會不一致啦



大哥,一般什麼情況下會失敗, 感覺沒什麼情況啊,就是一條insert語句,使用者名稱是手機號。欄位也都可以為空白

手機號重複,寫入值和欄位類型不一致 都可能失敗的
你寫入資料庫前應該過濾使用者資料

手機號重複,寫入值和欄位類型不一致 都可能失敗的
你寫入資料庫前應該過濾使用者資料



肯定過濾了,那天寫了一個監控,結果到現在沒出問題,等出問題就知道啥情況了,thanks 哥們。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.