【发布时间】:2021-01-29 01:41:57
【问题描述】:
在对注册表进行更新之前,我必须在 mysql 中实现以下触发器
强制要求所有字母等级在此数据库中必须是 A、B、C、D 之一(无 +/-)。还要确保成绩点值匹配:A=4.0, B=3.0, C=2.0, D=1.0
CREATE TABLE enrollment (
student_id CHAR(4) not null,
student_name VARCHAR(100) not null,
course_id CHAR(7) not null,
enroll_date DATE not null,
letter_grade CHAR(2),
grade_points DECIMAL(2,1),
PRIMARY KEY (student_id, course_id)
);
这是我目前所拥有的:
create trigger letter_grade_checker before update on enrollment
for each row
begin
if ((new.letter_grade != 'A' and new.grade_points != 4.0)
or (new.letter_grade != 'B' and new.grade_points != 3.0)
or (new.letter_grade != 'C' and new.grade_points != 2.0)
or (new.letter_grade != 'D' and new.grade_points != 1.0))
then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid grade or grade_points provided';
end if;
end;
虽然它不适用于以下更新语句:
UPDATE enrollment SET letter_grade = 'B', grade_points = 3.0
WHERE student_id = '9999' and course_id = 'CSC-399';
【问题讨论】:
标签: mysql