比如有張庫存表 inv,有個字段物料 material,有個字段數量 qty,當然還有ID。每次入庫,先查找庫存是否有這個物料,如果有的話,則數量需要加上去,如果不存在,需要生成一條這樣的記錄,包含物料以及數量。我只是打個比方,這個在一般系統里面都會初始化的,沒個物料都有一條默認的數量為0的記錄,我就不說了。如果不能初始化,我需要動態的添加,則情況如下,比如 M1物料入庫10公斤如果存在 就數量加 不存在就新加一行if(inv exists 'M1') { update inv set qty=qty+10 where material='M1'}else{ insert inv (material,qty) values ('M1',10)}如果并發的話,比如 人員A、B同時做入庫單A 執行 查看 exists 時間為t1B 執行 查看 exists 時間為t2A 執行 查看 insert 時間為t3B 執行 查看 insert 時間為t4t1<t2<t3<t4,如果剛好遇到這樣的情況,大家查的時候都不存在,每個人都入了,怎么辦,處理這種情況,這樣導致物料M1存在2條數據,當然 可以對物料進行唯一索引,但是這樣B插入就會報錯,請問大家有什么辦法讓這種情況不發生,不能唯一索引,也不能lock table,謝謝
如果有個業務場景:該怎么處理?
幕布斯6054654
2022-10-26 21:19:16