2017-06-05 89 views
1

我需要更新父表的值,當一個子行被刪除。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

回答

1

所以,我懷疑;是這裏的問題。我添加了$$作爲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;

希望這有助於!