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

时间:2015-06-05 08:31:44

标签: php mysqli triggers

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

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

周是TEXT,而overall_score是INT

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

1 个答案:

答案 0 :(得分:1)

我会使用以下两个步骤来解决这个问题:

  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 ;