记录工作中遇到的关于更新丢失商品超开的一个坑
工作中使用MybatisPlus以及Oracle进行数据库操作,收到RocketMQ消息开始并发分摊不同清货单的商品的批次,并对商品更新冻结数量。询问另一位领导时,说我学艺不精,并告诉我MyBatisPlus会自动帮我们管理事务,不用加for update。事实上,底层还有一个复用的记账方法也没加for update,导致了两张库存表不一致的问题。属实是刻骨铭心的记忆了。RC级别会出现更新丢失问题,导致冻结数量<开票数量,进而导致超开。Oracle默认隔离级别是RC,MySQL默认隔离级别是RR。
原创
2024-07-21 14:03:13 ·
157 阅读 ·
0 评论