MySQL嵌套条件更新触发器
我试图找出一个条件触发器来更新MySQL表。 问题是,即使输入的数据与已经存在的数据相同,更新触发器也会触发。因此,如果我有一个列,它的行:值设置如下加上投票:2,如果我用MySQL嵌套条件更新触发器,mysql,triggers,conditional-statements,Mysql,Triggers,Conditional Statements,我试图找出一个条件触发器来更新MySQL表。 问题是,即使输入的数据与已经存在的数据相同,更新触发器也会触发。因此,如果我有一个列,它的行:值设置如下加上投票:2,如果我用update-vows-set加上投票=2更新即使没有任何改变,更新触发器仍然会被触发。为了防止所有这些,我想在触发器中添加一个条件子句,如下所示 BEGIN IF NEW.vote_value <> OLD.vote_value THEN UPDATE my_other_table SET plus_votes
update-vows-set加上投票=2更新代码>即使没有任何改变,更新触发器仍然会被触发。为了防止所有这些,我想在触发器中添加一个条件子句,如下所示
BEGIN
IF NEW.vote_value <> OLD.vote_value THEN
UPDATE my_other_table
SET plus_votes =
CASE NEW.vote_value WHEN '1'
THEN plus_votes + 1
ELSE plus_votes
END,
minus_votes =
CASE NEW.vote_value WHEN '1'
THEN minus_votes
ELSE minus_votes +1
END
WHERE my_other_table.id=NEW.votes_join_id;
END
开始
如果NEW.vote_value OLD.vote_value则
更新我的\u其他\u表
集合加票=
CASE NEW.vote_值在“1”时
然后加上你的票+1
其他加投票
完,,
减票=
CASE NEW.vote_值在“1”时
然后减去你的票数
ELSE减_票+1
结束
其中my_other_table.id=NEW.voces_join_id;
结束
结束
问题的后半部分是IF语句中有CASE条件。
有人能在这个ISSU上提供帮助,并演示如何在触发器中执行嵌套条件吗
非常感谢虽然您发布的语法完全错误,但我已经找到了您想要的内容,请尝试一下(未经测试)
如果存在upd_表决,则丢弃触发器;
分隔符$$
更新“我的其他”表后创建触发器upd_投票`
每行开始
如果NEW.vote_value OLD.vote_value则
设置
NEW.plus\u voces=IF(NEW.voces\u value=1,OLD.plus\u voces+1,OLD.plus\u voces),
NEW.minus_Voces=IF(NEW.vote_value=1,OLD.minus_Voces,OLD.minus_Voces+1)
如果结束;
结束$$
定界符;
触发器的语法完全错误
您需要编写一个简单的mysql查询,而不是触发器。我可能应该包含整个触发器语法,我的意思是作为伪代码。我非常感谢您的帮助,并将在以后的帖子中纠正这一点或清楚地标记它。
DROP TRIGGER IF EXISTS upd_vote;
DELIMITER $$
CREATE TRIGGER upd_vote AFTER UPDATE ON `my_other_table`
FOR EACH ROW BEGIN
IF NEW.vote_value <> OLD.vote_value THEN
SET
NEW.plus_votes = IF(NEW.vote_value=1,OLD.plus_votes+1,OLD.plus_votes),
NEW.minus_votes = IF(NEW.vote_value=1,OLD.minus_votes,OLD.minus_votes +1 )
END IF;
END$$
DELIMITER ;