首页 > 解决方案 > 在触发器中使用 Sum 等函数的最佳实践?

问题描述

我在插入后在我的数据库中创建一个触发器。下面是我的代码

CREATE TRIGGER updateBalance
    After insert ON wallets
    for each row 
    Begin
        INSERT INTO userbalances (UserId, Balance) VALUES (New.UserId, (Select Sum(Amount) From wallets Where wallets.UserId = New.UserId))
        ON DUPLICATE KEY UPDATE TotalBalance=VALUES(TotalBalance);
    END

由于我的wallets表包含很多记录,并且经常将新数据插入其中。上述方法是否有效且是一种良好做法?

这是我的另一种方法

CREATE TRIGGER updateBalance
    After insert ON wallets
    for each row 
    Begin
        INSERT INTO userbalances (UserId, Balance) VALUES (New.UserId, New.Amount)
        ON DUPLICATE KEY UPDATE TotalBalance=TotalBalance + VALUES(TotalBalance);
    END

第一种方法是使用聚合函数,另一种方法是使用简单的更新。哪个是更好的性能明智。

附言

可能存在一些语法错误,但我的主要目标是找到更好的查询。

谢谢

标签: mysqlmysql-workbenchdatabase-trigger

解决方案


推荐阅读