我需要在post.id = like.module_id的post.like_count中添加一个数字 ! like.module_id定义何时插入到类似表中
(邮政表) ID 用户身份 LIKE_COUNT
(像表格一样) ID 是模块 像
(如表触发器)
DELIMITER $$CREATE TRIGGER update_LikeCount
AFTER INSERT ON like FOR EACH ROW
BEGIN
UPDATE post SET hpost.like_count = post.like_count + 1
WHERE post.id = like.module_id;
END
$$DELIMITER ;
答案 0 :(得分:1)
如果不使用任何令人讨厌的小黑客,你就无法将参数传递给触发器(它们独立于触发它们的代码,可能来自任何地方(应用程序代码,管理控制台等))
在我看来,您可能希望稍微更改一下您的体系结构,以便将用户ID合并到类似的表中...
(我可能没有正确理解这种情况,所以如果您认为有帮助,请更新更多信息!)
答案 1 :(得分:1)
您可以使用NEW
关键字引用要插入的行的字段(就像使用表名一样):
CREATE TRIGGER ...
UPDATE post SET hpost.like_count = post.like_count + 1
WHERE post.id = NEW.module_id;
...
请注意,OLD
和[{1}}触发器也可以使用ON UPDATE
关键字。
只是关于这个触发器的相关性的侧面说明。您似乎试图预先计算给定帖子的“喜欢”数量。除非你的表真的非常大,你的数据库确实非常繁忙,否则这样的查询应该是即时的,并且可以保证始终返回准确,最新的数据,而无需实现复杂的维护:
ON DELETE
您可能想重新考虑您的方法。