追问第三问:
设计一个触发器,当修改学生成绩(学号,姓名,课程名,成绩)时执行该触发器,如果学生或课程不存在,则抛出错误,否则修改SC表中相应的成绩,并将修改信息(学号,课程号,原成绩,修改后成绩,修改者用户名,修改日期)记录到成绩修改表中。
追答DELIMITER //
CREATE TRIGGER tr_couser_update
BEFORE UPDATE ON course
FOR EACH ROW
BEGIN
-- 数据行数.
DECLARE v_nowCount INT;
-- 如果学生不存在,则抛出错误
SELECT
COUNT(1) INTO v_nowCount
FROM
student
WHERE
id = new.student_id;
IF v_nowCount = 0 THEN
-- 由于 MySQL 没有直接抛出异常的语句
-- 因此这里通过在触发器里面,插入/删除自己这个表
-- 导致 MySQL 发生异常
UPDATE course SET grade = 100 WHERE student_id = 0;
END IF;
-- 如果课程不存在,则抛出错误
SELECT
COUNT(1) INTO v_nowCount
FROM
course
WHERE
id = new.course_id;
IF v_nowCount = 0 THEN
-- 由于 MySQL 没有直接抛出异常的语句
-- 因此这里通过在触发器里面,插入/删除自己这个表
-- 导致 MySQL 发生异常
UPDATE course SET grade = 100 WHERE student_id = 0;
END IF;
-- 插入日志信息.
INSERT INTO couser_log VALUES (
new.student_id,
new.course_id,
old.grade,
new.grade,
user(),
NOW()
);
END;
//
DELIMITER ;
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。