2015-12-15 33 views
0

我有一個數據庫中的結構,其中我有一個問題表,有4列的結果所以,int id,字符串問題,int a,int b,int c ,int d在MYSQL中觸發更新不同的列取決於插入的值

而答案表有int id,int user_id,int question_id,字符串答案。

現在答案表中的答案可以是a,b,c或d,並且在問題表中我有每個答案的數量。

我想要做的是創建一個觸發器,當插入新答案時,它會自動增加相應列上的值。

DELIMITER $$ 
DROP TRIGGER IF EXISTS `answer_INSERT` $$ 
CREATE TRIGGER `answer_INSERT` 
AFTER INSERT ON `answer` 
FOR EACH ROW 
BEGIN 
    IF(answer.answer LIKE ('a')) 
     UPDATE `question` SET `a`=`a`+1 WHERE `id`=answer.question_id 
    ELSE IF(answer.answer LIKE ('b')) 
     UPDATE `question` SET `b`=`b`+1 WHERE `id`=answer.question_id 
    .... 
END $$ 
DELIMITER ; 

我知道代碼並不是非常正確,但這或多或少是我所期待的。

回答

0
DELIMITER $$ 
DROP TRIGGER IF EXISTS `answer_INSERT` $$ 
CREATE TRIGGER `answer_INSERT` 
AFTER INSERT ON `answer` 
FOR EACH ROW 
BEGIN 
    IF NEW.answer = 'a' THEN 
     UPDATE `question` SET `a` = `a`+1 WHERE `id` = NEW.question_id;   
    ELSEIF NEW.answer = 'b' THEN 
     UPDATE `question` SET `b` = `b`+1 WHERE `id` = NEW.question_id; 
    END IF; 
END $$ 
DELIMITER ; 
+0

謝謝man.Out好奇。爲什麼你必須把$ $$? – Markus

+0

您需要將分隔符更改爲「;'以外的內容。其他觸發器定義將在最好的';;'結束,這將使其不完整。如果你的觸發器非常簡單並且不包含';',那麼你不需要首先將分隔符更改爲別的。 –

相關問題