首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法可以获得每个用户的注释数并在number_of_comments列中自动更新它?

是否有一种方法可以获得每个用户的注释数并在number_of_comments列中自动更新它?
EN

Stack Overflow用户
提问于 2022-01-18 07:36:14
回答 1查看 37关注 0票数 0

我在MySQL里有两张桌子像这样

代码语言:javascript
复制
Users -> user_id , user_name , number_of_comments
Comments -> comment_id , comment , user_id

是否有一种方法可以获得每个用户的注释数并在number_of_comments列中自动更新它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-18 07:51:13

不推荐,但还是解决了。只供学习之用。

代码语言:javascript
复制
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列,并在需要时根据查询计算实际的注释金额值。

如果您同意该值可能是近似的(与确切值略有不同),则可以使用增量触发器。

代码语言:javascript
复制
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;

但是,为了以防万一,提供服务存储过程(或事件)的创建,该存储过程将定期重新计算累积值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70751802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档