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行附近要使用的正确语法