mysql - MYSQL中的触发器根据插入的值更新不同的列

标签 mysql

我在数据库中有一个结构,其中有一个问题表,其中包含 4 列结果,因此,int id,字符串问题,int a,int b,int c,int d

以及答案表,其中包含int id,int user_id,int Question_id,字符串answer。

现在答案表中的答案可以是 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 ;

我知道代码并不完全正确,但这或多或少是我想要做的。

最佳答案

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 ;

关于mysql - MYSQL中的触发器根据插入的值更新不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284962/

相关文章:

php - WordPress登录屏幕数据库问题

mysql - 是否有 mysql "multitable"触发器 - E.G.仅在所有表更新完成后才触发的触发器?

c# - 如何根据组合框中的选定值从数据库中检索数据?

MySQL加入空值?

mysql - 如果类别为空,SQL删除类别

mysql - 如何在没有 ON 子句的情况下连接 2 个表

MySQL 查询组合来自多个表的总和

php - 使用 mysqli 插入带有 if 条件的值

mysql - 在表中添加值并显示最高值

php - MySQL查询产品属性表