创建触发器,使得删除student表中的某一学生时,sc表中的该学生的相关选课记录也被删除
时间: 2024-02-18 13:04:15 浏览: 67
你可以使用如下的SQL语句来创建一个触发器:
```sql
CREATE TRIGGER delete_student
BEFORE DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE sc.sid = OLD.sid;
END;
```
解释一下这个SQL语句:
- `CREATE TRIGGER delete_student`:创建名为 `delete_student` 的触发器。
- `BEFORE DELETE ON student`:在 `student` 表中执行 `DELETE` 操作之前触发该触发器。
- `FOR EACH ROW`:对于每一行被删除的记录,都会执行一次触发器中的操作。
- `BEGIN` 和 `END` 之间的部分是触发器的主体,即在触发器被触发时需要执行的操作。
- `DELETE FROM sc WHERE sc.sid = OLD.sid;`:删除 `sc` 表中 `sid` 等于被删除记录的 `sid` 值的记录。
这样,当你删除 `student` 表中的某个学生时,该学生在 `sc` 表中的选课记录也会被删除。
相关问题
创建触发器,在 student表中删除学生信息的同时将 sc表中该学生的选课信息删除,以确保数据的完整性:
可以使用以下 SQL 语句创建一个触发器来实现该功能:
```
CREATE TRIGGER delete_student
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM sc WHERE student_id = OLD.student_id;
END;
```
该触发器会在 `student` 表中删除一条记录时触发,然后自动删除 `sc` 表中与该学生有关的选课信息。其中,`OLD` 代表被删除的记录。
2(1)创建触发器sc_delete,当删除student表中的一条学生记录时,自动删除score表中对应学生的选课记录。 (2) 删除student表中的一条学生记录,验证触发器的作用。
1. 创建触发器:
```sql
CREATE TRIGGER sc_delete
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM score WHERE student_id = OLD.student_id;
END;
```
2. 删除student表中的一条学生记录:
```sql
DELETE FROM student WHERE student_id = 1;
```
执行这个语句后,触发器会自动删除score表中对应学生的选课记录。可以通过以下语句验证:
```sql
SELECT * FROM score WHERE student_id = 1;
```
如果没有返回任何结果,说明触发器生效了,score表中对应学生的选课记录已被删除。
阅读全文