若想实现删除某一个班级的同时能自动删除该班的学生、班级的课程以及这个班学生的成绩,

来源:百度知道 编辑:UC知道 时间:2024/06/17 11:12:19
这是索要求的表,请大家帮忙了!!
经过对项目需求分析,进行如下数据库设计:
1.创建学员管理系统数据库,按要求用SQL语句创建以下各表:
1)科目表(编号,科目名称,备注)
其中:编号为主键,5个字符;科目名称不可为空。
2)班级表(编号,班级名称,备注)
其中:编号为主键,3个字符;班级名称不可为空。
3)学生表(学号,姓名,性别,出生日期,班级编号,备注)
其中:学号为主键,9个字符,该字段命名规则为"XXXX-XXX-XX",即:"入学年份-班级编号-班内编号";
班级编号为该表引用班级表的外键。
4)开课计划表(班级编号,科目编号,开课时间,结课时间)
其中:班级编号和科目编号为该表的组合主键;并通过分别在班级编号和科目编号上创建外键以建立该
表与班级表和科目表的联系。
5)成绩表(学号,课程号,成绩)

SQL?
用触发器,如下!

create trigger s_del on 班级表
instead of delete
as
begin tran
delete from 成绩表 where 学号 in(select 学号 from 学生表 where 班级编号 in(select 班级编号 from deleted))
delete from 学生表 where 班级编号 in(select 班级编号 from deleted)
delete from 开课计划表 where 班级编号 in(select 班级编号 from deleted)
delete from 班级表 where 班级编号 in(select 班级编号 from deleted)
if @@error = 0
commit tran
else
begin
rollback tran
raiserror('删除出错。',16,1)
end