创建一删除前触发器trigger_student_sc_delete,实现在删除一名学生时,级联删除sc中的相关记录。
时间: 2024-02-21 15:57:26 浏览: 66
好的,这是一个关于 MySQL 数据库的问题。我提供一个参考的 SQL 代码如下:
```
CREATE TRIGGER trigger_student_sc_delete
BEFORE DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE sc.sid = OLD.sid;
END;
```
其中,`student` 表是学生表,`sc` 表是学生选课表,`sid` 是学生表中的学生编号,`OLD.sid` 表示当前要删除的学生的学生编号。这个触发器的作用是,当 `student` 表中删除一名学生时,会自动将 `sc` 表中该学生的所有选课记录一并删除。
相关问题
5. 学生表(Student)中存放学生的记录,学生选修表 (SC) 中存放学生的修课及成绩情况。创建一个触发器ScDel_Cascade,当删除Student中的数据时,数据表SC中有关刚刚删除学生的修课成绩信息也能被级联删除掉。
好的,以下是触发器的创建语句:
```sql
CREATE TRIGGER ScDel_Cascade
AFTER DELETE ON Student
FOR EACH ROW
BEGIN
DELETE FROM SC WHERE StudentID = OLD.StudentID;
END;
```
触发器的作用是在每次从Student表中删除一条记录时自动执行,删除SC表中与该学生关联的修课成绩信息。其中,OLD关键字表示被删除的行,StudentID是学生表中的主键,也是SC表中与学生关联的外键。
创建与 grade 表相同的表 sc;在 course 表上创建触发器 del_trig,当 course 表上 删除一门课程时,级联删除 sc 表该课程的记录
创建 sc 表的 SQL 语句:
```sql
CREATE TABLE sc (
sno CHAR(10),
cno CHAR(4),
grade INT,
PRIMARY KEY(sno, cno),
FOREIGN KEY(sno) REFERENCES student(sno),
FOREIGN KEY(cno) REFERENCES course(cno)
);
```
创建触发器 del_trig 的 SQL 语句:
```sql
CREATE TRIGGER del_trig
AFTER DELETE ON course
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE cno = OLD.cno;
END;
```
以上 SQL 语句的含义为:
- 创建名为 sc 的表,包含学号、课程号和成绩字段,其中学号和课程号组合为主键,同时分别与 student 表和 course 表的主键相连。
- 创建名为 del_trig 的触发器,它在 course 表上进行 DELETE 操作时触发。对于每一条被删除的记录,触发器会在 sc 表中删除与该课程号相同的记录。其中 `OLD.cno` 代表被删除的记录中的课程号字段。
阅读全文