创建一个after触发器,在student表中删除某学生的记录时,删除其相应的选课记录。
时间: 2024-02-21 13:57:14 浏览: 71
好的,以下是创建after触发器的SQL语句:
```
CREATE TRIGGER delete_student AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM selection WHERE student_id = OLD.student_id;
END;
```
解释一下:
- `delete_student` 是触发器的名称,可以自定义;
- `AFTER DELETE` 表示触发时机,即在`student`表中有记录被删除之后触发;
- `ON student` 表示在`student`表上创建触发器;
- `FOR EACH ROW` 表示触发器针对每一行数据都会执行;
- `DELETE FROM selection` 表示在`selection`表中删除符合条件的记录;
- `WHERE student_id = OLD.student_id` 表示删除`selection`表中`student_id`与`OLD`表中对应记录`student_id`相同的记录,`OLD`表示被删除的记录。
这样,在删除`student`表中某个学生记录时,就会自动删除其在`selection`表中的选课记录。
相关问题
oralce中创建一个after触发器,在student表中删除某学生的记录时,删除其相应的选课记录
可以使用以下SQL语句创建一个在学生表中删除记录时删除相应选课记录的触发器:
```
CREATE OR REPLACE TRIGGER delete_student_courses
AFTER DELETE ON student
FOR EACH ROW
BEGIN
DELETE FROM course_selection
WHERE student_id = :OLD.student_id;
END;
```
在上述代码中,`delete_student_courses` 是触发器的名称,`AFTER DELETE ON student` 表示该触发器是在删除学生表中的记录时触发,`FOR EACH ROW` 表示该触发器会为每一行执行一次,`:OLD.student_id` 表示被删除的学生记录的 `student_id` 字段的值。
触发器的主体部分是一个 PL/SQL 块,其中包含一个 SQL 语句来删除选课表中与被删除学生相应的选课记录。
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表中对应学生的选课记录已被删除。
阅读全文