插入feedback时更新post点赞计数器的触发器#1054报错排查
触发器错误排查与修复
问题根源
你触发的#1054错误,是因为在触发器的UPDATE语句里直接使用post_feedback时,数据库会默认从当前操作的post表中查找这个字段——但post表根本没有post_feedback列,自然报错。
在MySQL的AFTER INSERT触发器中,要引用刚插入到触发表(这里是feedback)的新记录字段,必须用NEW.前缀来明确指定,告诉数据库这个字段来自刚插入的那条feedback记录。
修正后的触发器代码
CREATE TRIGGER updateLikeCounter AFTER INSERT ON feedback FOR EACH ROW UPDATE post SET conteggio_like_post = conteggio_like_post + 1 WHERE ID_post = NEW.post_feedback;
补充说明
- 你的原代码里用了
COALESCE(conteggio_like_post, 0),其实可以省略——因为post表的conteggio_like_post字段已经设置了DEFAULT 0,即使字段值为NULL(默认值已经避免了这种情况),MySQL也会自动用0来计算。 - 如果后续需要处理删除
feedback记录时递减点赞数的场景,可以再创建一个AFTER DELETE触发器,把+1改成-1,同样用OLD.post_feedback来引用被删除的记录字段。
内容的提问来源于stack exchange,提问作者Rosmerade
相关产品推荐
相关产品推荐

