4)创建一个触发器,要求:当往tb_sc表插入数据之后,对于插入记录中的课程号,保证如果没有选修其先修课程,则不能选修该课程;使用SQL语句激活触发器。
时间: 2024-02-25 13:55:47 浏览: 137
可以使用如下的 SQL 语句创建触发器:
```sql
CREATE TRIGGER trg_check_prerequisite
AFTER INSERT ON tb_sc
FOR EACH ROW
BEGIN
DECLARE prerequisite INT; -- 先修课程号
SELECT prerequisite INTO prerequisite FROM tb_course WHERE course_num = NEW.course_num;
-- 检查是否存在先修课程
IF prerequisite IS NOT NULL AND
NOT EXISTS (SELECT * FROM tb_sc WHERE student_id = NEW.student_id AND course_num = prerequisite) THEN
DELETE FROM tb_sc WHERE student_id = NEW.student_id AND course_num = NEW.course_num;
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'You have not completed the prerequisite course.';
END IF;
END;
```
这个触发器会在向 `tb_sc` 表插入数据后触发,对于插入记录中的课程号,会检查该课程是否有先修课程。如果存在先修课程,就检查该学生是否已经选修了先修课程,如果没有选修则会删除当前插入的这条记录,并抛出一个错误信息。这样就可以保证如果没有选修先修课程,则不能选修该课程。
要激活这个触发器,可以使用如下的 SQL 语句:
```sql
ALTER TABLE tb_sc ENABLE TRIGGER trg_check_prerequisite;
```
阅读全文