使用資料庫處理併發可能導致的問題

SeeMoonUp發表於2019-02-01

叢集導致的資料併發異常

例如庫存只剩餘一個 同時進入兩個請求 資料可能出現負值的情況

解決方案

在資料庫中將欄位定義為unsigned

repository INT(11) unsigned DEFAULT `0`COMMENT `庫存`複製程式碼

程式中 如果資料已經為0 程式依然請求減一的操作 資料會出現DataIntegrityViolationException 異常

try {
   //執行資料庫庫存-1的操作
   ......
} catch (DataIntegrityViolationException e) {   //併發導致的庫存問題
    //異常處理
    ......
}複製程式碼

通過這種方式可以保證資料的正確性

未經作者允許 請勿轉載,謝謝 ?

相關文章