创建删除触发器,当删除学生基本信息时,对应成绩被删除
时间: 2024-01-02 13:04:05 浏览: 275
可以使用删除触发器来实现当删除学生基本信息时,对应成绩被删除的功能,具体 SQL 语句如下:
创建触发器:
```
CREATE TRIGGER delete_score_trigger
BEFORE DELETE ON student_info
FOR EACH ROW
BEGIN
DELETE FROM student_score WHERE student_id = OLD.student_id;
END;
```
上述触发器名称为 `delete_score_trigger`,在 `student_info` 表上创建,设定为在删除操作之前触发。`OLD` 为关键字,表示引用将要被删除的行,这里指的是 `student_info` 表中将要被删除的学生信息。语句 `DELETE FROM student_score WHERE student_id = OLD.student_id;` 表示将 `student_id` 为 `OLD.student_id` 的行从 `student_score` 表中删除。
删除触发器:
```
DROP TRIGGER IF EXISTS delete_score_trigger;
```
上述语句表示删除名称为 `delete_score_trigger` 的触发器。使用 `IF EXISTS` 可以避免在触发器不存在时出现错误。
相关问题
创建删除触发器,删除student表中基本信息,将sc表中相应学习成绩删除
好的,针对您的问题,我可以为您提供以下MySQL代码来创建一个触发器:
```
CREATE TRIGGER delete_student
BEFORE DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE sc.sno = OLD.sno;
END;
```
这个触发器的作用是在删除 `student` 表中的某一行数据之前,先在 `sc` 表中删除对应学生的学习成绩。当您执行以下语句来删除 `student` 表中某一行数据时:
```
DELETE FROM student WHERE sno = 'your_sno';
```
那么,该触发器就会自动执行,从 `sc` 表中删除该学生的成绩记录。
希望这个回答能够帮助您解决问题。如果您还有其他问题或需求,请随时告诉我。
创建级联删除触发器 del_student_score,当删除 student 表中的学生时,也删除 score 表中的对应学号的学生成绩记录
### 回答1:
好的,这是一个技术问题,我可以回答。创建级联删除触发器的语句如下:
CREATE TRIGGER del_student_score
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM score WHERE score.sid = OLD.sid;
END;
这将删除 student 表中的学生时,也会同时删除 score 表中对应学号的学生成绩记录。
### 回答2:
要创建一个级联删除触发器 del_student_score,当我们删除 student 表中的学生时,也会自动删除 score 表中对应学号的学生成绩记录。
首先,我们需要在数据库中创建一个触发器。可以使用如下的 SQL 语句来创建触发器:
CREATE TRIGGER del_student_score
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM score WHERE score.student_id = OLD.student_id;
END;
这个触发器将在每次从 student 表中删除一行记录时被触发。在触发器中,我们使用 DELETE 语句从 score 表中删除对应学号的学生成绩记录。这是通过将 student 表中删除的行的学生学号(OLD.student_id)与 score 表中的学生学号(score.student_id)进行匹配来实现的。
当我们从 student 表中删除一个学生记录时,触发器就会自动被触发。然后,触发器会执行 DELETE 语句将 score 表中对应学号的学生成绩记录也删除掉。
这样,每当我们删除 student 表中的一个学生记录时,也会自动删除 score 表中对应学号的学生成绩记录,实现了级联删除的效果。
阅读全文