建立一个后触发器, 当向成绩表中插入或修改记录时, 如果插入或修改的数据与学生表学号和课程表课程号的中数据不匹配 此插入或修改无效
时间: 2024-01-22 19:17:40 浏览: 162
创建触发器删除、更新、插入
可以使用触发器实现,以下是一个基本的示例:
```sql
CREATE TRIGGER check_grades_match
AFTER INSERT OR UPDATE ON grades
FOR EACH ROW
BEGIN
DECLARE s_id INT;
DECLARE c_id INT;
SELECT student_id, course_id INTO s_id, c_id FROM students_courses
WHERE student_id = NEW.student_id AND course_id = NEW.course_id;
IF s_id IS NULL OR c_id IS NULL THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Invalid insert/update: student or course not found in students_courses table';
END IF;
END;
```
这个触发器会在每次插入或更新 `grades` 表中的记录时执行。首先,它会查询 `students_courses` 表,查找与新插入或更新的记录中的 `student_id` 和 `course_id` 匹配的记录。如果找不到匹配的记录,则触发器会抛出一个错误,使插入或更新操作无效。
阅读全文