MySQL 触发器:将文本转换为数字
MySQL trigger: convert text to numbers
我有一个包含这些字段的 table:
users {id,name,week1,week2,week3,overall_score}
星期是 TEXT,overall_score 是 INT
在第一周,将 Absent
或 Present
放入其中。 Absent
是 0 分,Present
是 10。我想在每次更新后自动创建一个触发器 运行 来计算总分并将文本转换为数字。
我将使用以下 2 个步骤解决这个问题:
创建一个函数来确定特定周的分数...
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 ;
我有一个包含这些字段的 table:
users {id,name,week1,week2,week3,overall_score}
星期是 TEXT,overall_score 是 INT
在第一周,将 Absent
或 Present
放入其中。 Absent
是 0 分,Present
是 10。我想在每次更新后自动创建一个触发器 运行 来计算总分并将文本转换为数字。
我将使用以下 2 个步骤解决这个问题:
创建一个函数来确定特定周的分数...
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 ;