mysql事务和余额

i5desfxk  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(335)

所以我在mysql中有一个包含用户信息的表:

[             USERS           ]
[id | name |  email  | balance]
[ 1 | A    | a@e.com |    0   ]
[ 2 | B    | b@e.com |    0   ]
[ 3 | C    | c@e.com |    0   ]

以及一个包含事务的表

[           TRANSACTIONS         ]
[id | user_id | product |  amount  | price ]
[ 1 |       3 |TV 600   |       1  | 279,22]
[ 2 |       2 |Radio G  |       1  |  32,12]

如果我在表中添加一行 transactions ,即 balance 也会更新用户的。要100%确保平衡始终正确,最好的做法是什么?
带锁、触发器或其他东西的存储过程?

t1rydlwq

t1rydlwq1#

我会用一个视图来完成这个任务。最新的数据是有保证的,因为当查询视图时,它后面的查询被执行,所以它会重新计算您的余额。

create view MyCalculatedView as
select u.id, u.name, u.email, t.balance from USERS u
left join (
    select user_id, sum(price) as balance
    from TRANSACTIONS
    group by user_id
) t on u.id = t.user_id;

相关问题