gpt4 book ai didi

mysql - 如何正确处理 MySQL 的货币交易?

转载 作者:行者123 更新时间:2023-11-29 02:12:18 25 4
gpt4 key购买 nike

我有以下表格:

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 笔),并且两个账户都会更新以反射(reflect)最新余额。

我的问题是如何使一切成为原子,以避免无效余额或重复。我不认为我可以使用 MySQL 事务,因为它们不能跨表工作 - 特别是当一个语句失败并且我们需要回滚时。

我不确定如何实现这种机制以确保此功能可靠并且不会在奇怪的极端情况下中断。

最佳答案

除非您可以控制整个堆栈,否则您无法确定插入的数据是否重复。在多家金融公司工作过,我的建议如下:

  1. 为每个帖子添加一个客户端 ID,将其存储在数据库中,然后在新帖子中检查它。
  2. 只插入(因此版本更新)和使用软删除。你永远不想删除文件记录。
  3. 将钱存储为小数,而不是双数

关于mysql - 如何正确处理 MySQL 的货币交易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com