MySQL触发器:更新子行后删除子行

问题描述:

我需要更新父表的值,当一个子行被删除。MySQL触发器:更新子行后删除子行

父表:答案

  • id_answer
  • 答案
  • (包含总票数的)

儿童表:个answers_votes

  • id_vote
  • id_answer
  • id_user
  • date_insert
  • IP

每次子行被删除的父值表格必须减少1.

这是我当前创建触发器的句子,但UPDATE行有些错误,或许是votes-1?任何帮助将不胜感激。谢谢!

CREATE TRIGGER update_votes BEFORE DELETE on answers_votes 
FOR EACH ROW 
BEGIN 
UPDATE answers SET answers.votes = (answers.votes-1) WHERE answers.id_answer = OLD.id_answer; 
END 

任何想法?谢谢!

+1

你可以试试吗? 'DELIMITER $$ CREATE TRIGGER update_votes BEFORE DELETE ON answers_votes FOR EACH ROW BEGIN UPDATE SET答案= answers.votes(answers.votes -1)WHERE answers.id_answer = OLD.id_answer; END $$ DELIMITER;' – harshavmb

+0

此外,不存在分隔符,它终止于'update'行,因此我添加了'$$'作为分隔符。 – harshavmb

+0

@harshavmb工作!如果你发布你的解决方案,我可以选择它作为接受的答案。谢谢! – andufo

所以,我怀疑;是这里的问题。我添加了$$作为DELIMITER,以便mysql客户端不会误解;

修改后的触发将是:

DELIMITER $$ 
CREATE TRIGGER update_votes 
BEFORE DELETE ON answers_votes 
FOR EACH ROW 
BEGIN 
    UPDATE answers SET answers.votes = (answers.votes -1) WHERE answers.id_answer = OLD.id_answer; 
END$$ 
DELIMITER ; 

注意,这是不DELIMITER ;DELIMITER;

希望这有助于!