创建触发器,在 student表中删除学生信息的同时将 sc表中该学生的选课信息删除,以确保数据的完整性:
时间: 2024-02-28 07:57:30 浏览: 106
可以使用以下 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` 代表被删除的记录。
相关问题
创建触发器,使得删除student表中的某一学生时,sc表中的该学生的相关选课记录也被删除
你可以使用如下的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` 表中的选课记录也会被删除。
创建触发器sc_delete,当删除student表中的一条学生记录时,自动删除score表中对应学生的选课记录
可以使用如下的 SQL 语句创建一个名为 `sc_delete` 的触发器,实现删除学生表中学生记录时自动删除 score 表中对应学生的选课记录:
```
CREATE TRIGGER sc_delete
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM score WHERE student_id = OLD.student_id;
END;
```
这里使用了 `AFTER DELETE` 指示器,表示在删除操作执行后触发该触发器。`FOR EACH ROW` 表示在每一行删除操作完成后都会执行触发器中的代码。`OLD.student_id` 表示被删除的学生记录中的学号(即旧的学号),这个学号将被用来删除 score 表中对应学生的选课记录。具体来说,`DELETE FROM score WHERE student_id = OLD.student_id` 表示删除 score 表中学号为 `OLD.student_id` 的记录,即被删除的学生对应的选课记录。
阅读全文
相关推荐
















