实验任务

  • 首先创建请假统计表“leave_apply_stat”,该表包含学号和请假次数两个字段;然后,创建存储过程“leave_apply_stat_proc”,该存储过程统计每个学生的请假次数,并将统计的结果插入表“leave_apply_stat”中;
  • 执行(1)中创建的存储过程,查看表leave_apply_stat执行存储过程前后的数据变化。
  • 为student表使用create trigger语句创建触发器tri_delete,实现参照完整性(SET DEFAULT ‘000000’),并进行删除操作验证该触发器。

实验过程

Step1:首先创建请假统计表“leave_apply_stat”,该表包含学号和请假次数两个字段;然后,创建存储过程“leave_apply_stat_proc”,该存储过程统计每个学生的请假次数,并将统计的结果插入表“leave_apply_stat”中;

CREATE TABLE leave_apply_stat (
	studentNum varchar(16),
	apply_count int
)

GO
CREATE PROCEDURE leave_apply_stat_proc
AS BEGIN 	
	INSERT INTO leave_apply_stat SELECT studentNum, count(*) FROM leave_apply
	GROUP BY studentNum	
END

存储过程和函数非常相似,看看语法就会写了

Step2:执行(1)中创建的存储过程,查看表leave_apply_stat执行存储过程前后的数据变化。

EXEC leave_apply_stat_proc

执行存储过程后,表中成功添加了数据

Step3:为student表使用create trigger语句创建触发器tri_delete,实现参照完整性(SET DEFAULT ‘000000’),并进行删除操作验证该触发器。

GO
CREATE TRIGGER tri_delete ON student AFTER DELETE
	AS BEGIN
	UPDATE stu_choose_lesson SET studentNum = '000000' WHERE studentNum = (SELECT studentNum FROM deleted)
	UPDATE leave_apply SET studentNum = '000000' WHERE studentNum = (SELECT studentNum FROM deleted)
	END

DELETE student WHERE studentNum = '200101'

删除student表中studentNum为20010学号的学生后,student_choose_lesson和leave_apply表中,学号为200101的学生学号均设置为000000,实现了参照完整性

实验八Over,累死了,睡觉睡觉~


立志成为一名攻城狮