gpt4 book ai didi

mysql - 更新另一个表时更新表

转载 作者:行者123 更新时间:2023-11-30 22:20:49 25 4
gpt4 key购买 nike

我有 2 个表 TESTUserInfo 和 BlockRanking。

TestUserInfo 是一组用户信息和特定用户的总数。每个用户还有一个与其用户关联的区域。

在 BlockRanking 中,我将每个区域的所有用户组合起来,然后对该区域的所有总分求和。

我有这个查询从 TESTUserInfo 将值插入到表 BlockRanking 并且它有效。

INSERT INTO BlockRanking (zone, total) 
SELECT zone, SUM(total)
FROM TESTUserInfo
GROUP BY zone
ORDER BY SUM(total) DESC

现在我正在尝试做类似的事情,但我想在更新 TESTUserInfo 时更新 BlockRanking。我特别想在分组后更新 BlockRanking 中的区域和这些区域的总数。

我希望这是一个触发器,所以当 TESTUserInfo 更新时,BlockRanking 也将更新,或者按时间更新。如果这些不可能,那么查询也可以。

最佳答案

您可以使用 triggers在表上运行某些查询时运行任务。触发器为每个插入的行运行一次。我们可以跟踪添加到 TESTUserInfo 表中的总数,而不是聚合。

CREATE TRIGGER update_totals AFTER INSERT ON TESTUserInfo
FOR EACH ROW
BEGIN
INSERT INTO BlockRanking
(zone, total)
VALUES
(NEW.zone, NEW.total)
ON DUPLICATE KEY UPDATE
total = total + VALUES(total);
END;

请注意,zone 必须是 BlockRanking 中的唯一索引。

如果可以更新或删除 TESTUserInfo 中的行,您同样必须创建触发器。对于 UPDATE 触发器,您可以执行如下操作:total = total + NEW.total - OLD.total

另请参阅:

Trigger to update row in another table

关于mysql - 更新另一个表时更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36682931/

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