我有一个包含这些字段的表格:
users {id,name,week1,week2,week3,overall_score}
周是TEXT,而overall_score是INT
在第一周,将Absent
或Present
放入其中。 Absent
为0分,Present
为10.我想创建一个触发器,在每次更新后自动运行,以计算总分并将文本转换为数字。
答案 0 :(得分:1)
我会使用以下两个步骤来解决这个问题:
创建一个函数来确定特定周的分数......
DELIMITER //
CREATE FUNCTION `GetWeekScore`(`WeekAttendance` TEXT) RETURNS INT
BEGIN
IF WeekAttendance = 'Present' THEN
RETURN 10;
ELSE
RETURN 0;
END IF;
END//
DELIMITER ;
在触发器中使用该功能......
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 ;