创建一个delete_s_trigger触发器,当删除s表中某学生记录时,同时删除sc表中相应的所有选修课程记录: 然后删除0529赵欣同学时,观察sc表中的结果
时间: 2024-10-28 19:13:17 浏览: 28
实验六:创建存储过程和触发器1
创建一个名为`delete_s_trigger`的SQL级联删除(Cascade Delete)触发器,可以确保在删除`s`表中特定学生记录的同时,自动删除`s`表与`SC`表之间的关联记录。在这种模式下,当你删除`s`表中的学生,`SC`表中对应的学生的所有课程记录都会被删除。这种设置通常在两个表之间有依赖关系时使用。
首先,你需要确保`s`表和`SC`表之间有一个外键约束,比如`s_id`字段指向`s`表的主键,以便启用级联删除。以下是创建触发器的示例:
```sql
CREATE TRIGGER delete_s_trigger
AFTER DELETE ON s
FOR EACH ROW
WHEN MATCHED BY (DELETE_ID = OLD.ID) DO
BEGIN
DELETE FROM SC WHERE s_id = OLD.ID;
END;
```
这里假设`s`表有一个`ID`字段,并且我们在`SC`表中有一个`s_id`字段用于引用`s`表的记录。
现在我们尝试删除赵欣同学(0529),即执行以下命令:
```sql
DELETE FROM s WHERE ID = 0529;
```
删除操作完成后,你可以通过查询`SC`表来查看赵欣同学的课程记录是否已经被删除:
```sql
SELECT * FROM SC WHERE s_id IN (SELECT ID FROM s WHERE ID = 0529);
```
如果没有返回任何结果,说明`delete_s_trigger`触发器已经成功地删除了`SC`表中与0529相关的所有记录。
阅读全文