mysql中的自动更新列

mysql中的自动更新列,mysql,Mysql,目前我为我的下一个项目建立数据库,但是我的数据库包括讨论、帖子和其他一些表格 讨论桌 id | user_id | title | comments_count | replies_count 员额表 id | user_id | content | type 在posts表中键入评论、讨论和回复 我希望讨论表中的comments\u count列能够自动引用并自动选择具有comment类型的帖子的数量,我希望回复\u count也能这样 如果不可能,可以帮助我使用触发器或事件自动更新评论和

目前我为我的下一个项目建立数据库,但是我的数据库包括讨论、帖子和其他一些表格

讨论桌

id | user_id | title | comments_count | replies_count
员额表

id | user_id | content | type
在posts表中键入评论、讨论和回复 我希望讨论表中的comments\u count列能够自动引用并自动选择具有comment类型的帖子的数量,我希望回复\u count也能这样

如果不可能,可以帮助我使用触发器或事件自动更新评论和回复计数列

我希望你能帮助我

谢谢:

[编辑]

假设您有此架构:

CREATE TABLE discussions(id INT,user_id INT, title VARCHAR(50), comments_count INT, replies_count INT);
CREATE TABLE posts(id INT,user_id INT, content VARCHAR(50), type VARCHAR(50));
表中的数据如下:

INSERT INTO discussions VALUES
(1,1,"test1",0,0),
(2,2,"test2",0,0);
这个触发器可能会达到你想要的效果

DELIMITER $

CREATE TRIGGER update_comments_count_trigger
AFTER INSERT ON posts
FOR EACH ROW
BEGIN
  UPDATE discussions d 
  SET d.comments_count = (SELECT count(*) from posts where user_id = NEW.user_id and type="comment");

  UPDATE discussions d 
  SET d.replies_count = (SELECT count(*) from posts where user_id = NEW.user_id and type="reply");


END
因此,当您向POST表插入值时,如下所示:

INSERT INTO posts VALUES 
(1,1,'content1','comment'),
(1,2,'content2','comment'),
(1,2,'reply1','reply');

评论数和回复数应该更新。

我有一个错误,创建触发器更新评论数,插入每行帖子后触发,开始更新讨论d集d.comments\u count=SELECT count*from posts where user\u id=NEW.user\u id and posts.type=comment MySQL说:文档1064-您的日志中有一个错误SQL语法;检查与MariaDB服务器版本对应的手册,了解第6行附近要使用的正确语法