我有以下表格:
CREATE Account (id INTEGER, balance DECIMAL(13, 4))
CREATE Transaction (id INTEGER, user INTEGER, balance DECIMAL(13, 4), amount DECIMAL(13, 4), peer INTEGER)
因此,当用户将钱转移到他的同行时,系统中将有2个交易(每个交易1个),并且两个账户都将更新以反映最新余额。
我的问题是如何使一切都是原子的,以避免无效的余额或重复。我不认为我可以使用MySQL事务,因为它们不能跨表工作 - 尤其是当一个语句失败并且我们需要回滚时。
我不确定如何实施这样的机制,以确保此功能是可靠的,并且在奇怪的角落情况下不会中断。
答案 0 :(得分:0)
除非您可以控制整个堆栈,否则您无法确定插入的数据不是重复数据。在几家金融公司工作过,我的建议如下: