似乎是一个常见问题,但我不知道一个直接的答案-
环境
- Java EE 环境(多个 JVM)
- 2阶段提交设置
- 甲骨文数据库
给定
带有“AMOUNT”列的数据库表
逻辑
if SELECT SUM(AMOUNT) WHERE... + current amount < Const. ==> insert row
问题
竞争条件 - 我只想在“提交”时插入行。同时,我不希望其他线程访问我用于求和的数据。我还想尽可能减少未访问的数据库数据,以免滞留其他线程。
当前解决方案
使用 Oracle 的 SELECT FOR UPDATE 机制
有没有人有其他解决方案来处理这个问题?开箱即用的解决方案也将受到欢迎。