我在插入后在数据库中创建触发器。下面是我的代码
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。
可能会有一些语法错误,但是我的主要目的是找到更好的查询。
谢谢