我在MySQL里有两张桌子像这样
Users -> user_id , user_name , number_of_comments
Comments -> comment_id , comment , user_id是否有一种方法可以获得每个用户的注释数并在number_of_comments列中自动更新它?
发布于 2022-01-18 07:51:13
不推荐,但还是解决了。只供学习之用。
CREATE TRIGGER tr_ai_update_n_of_comments
AFTER INSERT ON comments
FOR EACH ROW
UPDATE users
SET number_of_comments = ( SELECT COUNT(*)
FROM comments
WHERE comments.user_id = NEW.user_id )
WHERE user_id = NEW.user_id;如果comments中的行可以被更新(随着user_id值的变化)和/或删除,那么在DELETE之后和UPDATE触发器之后创建类似的。
PS。我强烈建议您删除users.number_of_comments列,并在需要时根据查询计算实际的注释金额值。
如果您同意该值可能是近似的(与确切值略有不同),则可以使用增量触发器。
CREATE TRIGGER tr_ai_update_n_of_comments
AFTER INSERT ON comments
FOR EACH ROW
UPDATE users
SET number_of_comments = number_of_comments + 1
WHERE user_id = NEW.user_id;但是,为了以防万一,提供服务存储过程(或事件)的创建,该存储过程将定期重新计算累积值。
https://stackoverflow.com/questions/70751802
复制相似问题