MySQL 触发器:将文本转换为数字

MySQL trigger: convert text to numbers

我有一个包含这些字段的 table:

users {id,name,week1,week2,week3,overall_score}

星期是 TEXT,overall_score 是 INT

在第一周,将 AbsentPresent 放入其中。 Absent 是 0 分,Present 是 10。我想在每次更新后自动创建一个触发器 运行 来计算总分并将文本转换为数字。

我将使用以下 2 个步骤解决这个问题:

  1. 创建一个函数来确定特定周的分数...

    DELIMITER //
    
    CREATE FUNCTION `GetWeekScore`(`WeekAttendance` TEXT) RETURNS INT
    BEGIN
      IF WeekAttendance = 'Present' THEN
        RETURN 10;
      ELSE
        RETURN 0;
      END IF;
    END//
    
    DELIMITER ;
    
  2. 在触发器中使用该函数...

    DELIMITER //
    
    CREATE TRIGGER `CalculateOverallScore` BEFORE UPDATE ON `users`
      FOR EACH ROW
      BEGIN
        SET NEW.overall_score = (GetWeekScore(NEW.week1) + 
                                 GetWeekScore(NEW.week2) +
                                 GetWeekScore(NEW.week3));
      END//
    
    DELIMITER ;