用mysql建立一DML触发器,每当学生的成绩发生更新时,检查更新的学号是否满足0-100分之间,如果不满足则不允许更新,如满足则将更新的学号,成绩存入g_log表内
时间: 2023-12-27 09:04:34 浏览: 73
数据库上机实验
可以使用以下 SQL 语句在 MySQL 中创建该 DML 触发器:
```
CREATE TRIGGER trig_update_score
BEFORE UPDATE ON student
FOR EACH ROW
BEGIN
DECLARE s_score INT;
SELECT NEW.score INTO s_score;
IF s_score < 0 OR s_score > 100 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Score out of range!';
ELSE
INSERT INTO g_log (s_id, s_score)
VALUES (NEW.s_id, s_score);
END IF;
END;
```
该触发器会在每次更新学生表(`student`)中的成绩字段(`score`)时触发。首先会将即将更新的成绩值存储到一个变量 `s_score` 中,然后判断该成绩是否在 0 到 100 分之间。如果不在该范围内,则会抛出一个异常,阻止更新操作。如果成绩在范围内,则将该学号和成绩插入到 `g_log` 表中。
阅读全文