Mysql 数据库触发器如何将值的总和从一个表插入到另一个表?
我认为最好的方法是触发器?有什么想法吗? 我应该分别将表付款中每个用户名的Mysql 数据库触发器如何将值的总和从一个表插入到另一个表?,mysql,database-trigger,Mysql,Database Trigger,我认为最好的方法是触发器?有什么想法吗? 我应该分别将表付款中每个用户名的付款金额的总和插入到总金额表总余额中,每次将新的金额插入表付款时,都应该自动插入 ID username payment_amount Status +-------+-------------+-------------+-----------+ | 1 | John | 100 | Complete | +-------+-------------+
付款金额的总和插入到总金额表总余额中,每次将新的金额插入表付款时,都应该自动插入
ID username payment_amount Status
+-------+-------------+-------------+-----------+
| 1 | John | 100 | Complete |
+-------+-------------+-------------+-----------+
| 2 | John | 50 | Complete |
+-------+-------------+-------------+-----------+
| 3 | Alex | 100 | Complete |
+-------+-------------+-------------+-----------+
例如:用户“John”在其账户中填写了两次100美元和50美元,总计150美元$
表格中的示例:
表格:付款
ID username payment_amount Status
+-------+-------------+-------------+-----------+
| 1 | John | 100 | Complete |
+-------+-------------+-------------+-----------+
| 2 | John | 50 | Complete |
+-------+-------------+-------------+-----------+
| 3 | Alex | 100 | Complete |
+-------+-------------+-------------+-----------+
表格:总余额
ID username total_money
+-------+-------------+-------------+
| 1 | John | 150 |
+-------+-------------+-------------+
| 2 | Alex | 100 |
+-------+-------------+-------------+
我建议不要保留冗余数据。当出现不一致时,这可能是desaster的配方。我建议你使用一个视图,它给出了你的总数
DROP TABLE total_balance;
CREATE VIEW total_balance
AS
SELECT p.username,
sum(p.payment_amount) total_money
FROM payments p
GROUP BY p.username;
或者,如果您只想对已完成的付款求和:
DROP TABLE total_balance;
CREATE VIEW total_balance
AS
SELECT p.username,
sum(p.payment_amount) total_money
FROM payments p
WHERE p.status = 'Complete'
GROUP BY p.username;
视图中的数字将始终准确并反映当前情况。通常保持冗余不是一个好主意。让total\u balance
成为一个查询总和的视图。@stickybit你能解释得更详细一点吗?我给你写了一个更详细的答案。请不要通过破坏你的帖子为其他人做更多的工作。通过在堆栈溢出上发布,您已经在for SO下授予了分发该内容的不可撤销的权利。根据SO政策,任何故意破坏行为都将恢复原状。如果你想了解更多关于删除帖子的信息,请阅读1。错误:“字段列表”中未定义的“p.username”??什么是“p”?2.根据你的观点,是否有可能从总余额中减去?使用查询?@ShukurJank:1.:p
只是一个别名。在付款
中是否有一个名为用户名
的列?2.:不,你不应该那样做。通过在付款表中添加一个交易来更改余额。我的问题与此类似,已解决,请使用我的表检查并配置触发器。请使用我的表更正此应答代码,我自己无法完成,完全困惑:(