如何在mysql中传递参数到触发器

时间:2013-08-14 09:39:31

标签: mysql triggers

我需要在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 ;

2 个答案:

答案 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

您可能想重新考虑您的方法。