在触发器内使用求和等功能的最佳实践?

时间:2019-02-22 08:39:25

标签: mysql mysql-workbench database-trigger

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

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

第一种方法使用聚合函数,另一种方法使用简单的Update。在性能上更好。

P.S。

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

谢谢

0 个答案:

没有答案