併發insert情況下資料重複插入問題的解決方案

2021-09-07 18:23:32 字數 437 閱讀 9100

通常我們在介面裡要儲存一條資料時,會先判斷該條記錄在資料庫裡是否存在,如果不存在就插入,如果存在就返回已經存在。

就拿常見的工單來舉例

order order =orderservice.getbyordernum(ordernum);

if(order == null

)else

在單執行緒下這麼寫肯定沒問題,但是如果是併發情況下,很有可能會同時插入多條記錄進資料庫。

1.資料庫設計表的時候給工單編號ordernum設計唯一性約束。

2.**裡雙重檢驗加鎖

order order =orderservice.getbyordernum(ordernum);

if(order == null

) }

}else

併發insert情況下會發生重複的資料插入問題

併發insert情況下會發生重複的資料插入問題 1.背景 用多執行緒接收推送的訂單資料,把接收的訂單資料存到乙個表中,實現的需求是 如果接收的訂單訊息在資料庫中已經存在,那麼執行update操作 如果沒有存在,那麼執行insert操作 邏輯 if 該訂單在資料庫表中存在 else 執行緒啟動後,發現...

併發insert情況下會發生重複的資料插入問題

1.背景 用多執行緒接收推送的訂單資料,把接收的訂單資料存到乙個表中,實現的需求是 如果接收的訂單訊息在資料庫中已經存在,那麼執行update操作 如果沒有存在,那麼執行insert操作 邏輯 if 該訂單在資料庫表中存在 else 執行緒啟動後,發現 資料庫表中有兩條oderid相同的記錄 通過檢...

併發insert情況下會發生重複的資料插入問題

1.背景 用多執行緒接收推送的訂單資料,把接收的訂單資料存到乙個表中,實現的需求是 如果接收的訂單訊息在資料庫中已經存在,那麼執行update操作 如果沒有存在,那麼執行insert操作 邏輯 if oderid null else 執行緒啟動後,發現 資料庫表中有兩條oderid相同的記錄 通過檢...