Answer实验七

上传人:206****923 文档编号:91845375 上传时间:2019-07-02 格式:DOC 页数:4 大小:28.52KB
返回 下载 相关 举报
Answer实验七_第1页
第1页 / 共4页
Answer实验七_第2页
第2页 / 共4页
Answer实验七_第3页
第3页 / 共4页
Answer实验七_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《Answer实验七》由会员分享,可在线阅读,更多相关《Answer实验七(4页珍藏版)》请在金锄头文库上搜索。

1、实验七:触发器的应用1、 实验目的l 掌握DML和DDL触发器的创建方法;l 掌握DML和DDL触发器的查看、修改、重命名和删除方法。2、 实验内容(1) 创建触发器(1) 创建一个当学生表中插入一个新同学信息时能自动列出全部同学学生信息的触发器Display_trigger;向学生表中插入一新同学信息,验证触发器Display_trigger是否被执行。 create trigger display_triggeron studentafter insertasbeginselect * from student end (2)创建一个触发器delete_trigger,当向学生表中删除同学

2、信息时显示学生表中以下信息进行了删除操作:并将删除的的学生信息显示出来。验证触发器delete_trigger是否被执行。create trigger delete_trigger on studentafter deleteasbeginselect 学生表中以下信息进行了删除操作:select * from deletedend(3)创建一个DML触发器ins_sub_score,当对成绩表添加一条数据时,首先判断一下学号和课程号在学生表和课程表是否存在,若不在,拒绝插入。CREATE TRIGGER ins_course_score on course_score after inser

3、t ASBEGIN IF EXISTS(SELECT * FROM inserted a WHERE a.stu_id not in ( SELECT b.stu_id FROM students b ) or a.cour_id not in (SELECT c.cour_id FROM courses c) ) BEGIN RAISERROR(违背了数据的一致性,16,1) ROLLBACK TRANSACTION ENDELSERAISERROR(插入成绩记录成功!,16,10)ENDGO (4)在stusystem数据库中创建删除班级触发器remofve_class,作用是:如果要删除

4、一个班级,则首先需要删除其他表中与该班级有关联的信息。即:删除cla_sub表中与该班有关的记录,也就是取消改班级与相关科目的关联关系;删除cla_tea表中与该班有关的记录,也就是取消改班级与教师的关联关系;删除student表中与该班有关的记录,也就是删除该班级的学生及achievement表中学生的成绩信息。create trigger remofve_class on classafter deleteasbegindelete cla_sub where claid in(select claid from deleted)delete cla_tea where claid in(

5、select claid from deleted)delete achievement where stuid in (select stuid from student where claid in (select claid from deleted)delete student where claid in(select claid from deleted)end 验证触发器:delete class where claid=6注意:输入测试数据进行前后对比select * from class where claid=6select * from cla_sub where cla

6、id=6select * from cla_tea where claid=6select * from student where claid=6select * from achievement where stuid=9(2) 练习和管理触发器 建立数据库testdb,并在数据库中建立两个表:Txl(ID int, Name char(10), Age int);Person_ counts(Person_ count int)create table tx1(ID int, name char(10), Age int ) create table person_counts (p_c

7、ount int)l 使用T-SQL编写一个触发器tr_person_ins,每当txl表中插入一行数据时,表Person_ counts中对应的数量也相应地发生变化。create trigger tr_person_ins on tx1after insertasbegin if (select p_count from person_counts) is null) insert into person_counts values(0)update person_counts set p_count=p_count+(select COUNT(*)from inserted)end执行触发

8、器:insert into tx1 values(3,a,20)l 使用对象资源管理器创建一个触发器tr_person_del,每当txl表中删除记录时,表Person_ counts中对应的数量也相应地发生变化。create trigger tr_person_del on tx1after deleteasbegin if (select p_count from person_counts) =0) beginprint 人数已为returnendelseupdate person_counts set p_count=p_count-(select COUNT(*)from delet

9、ed)end执行触发器:delete tx1 where ID=2参考答案2:根据上述两题建立一个触发器,代码如下:create trigger tr_person_ins on tx1after insert,deleteasbegin declare n intif (select p_count from person_counts) is null) insert into person_counts values(0)select n=COUNT(*)from tx1update person_counts set p_count=nendl 使用对象资源管理器和T-SQL语句两种方法查看触发器tr_person_del的内容,并将该触发器的内容加密。 sp_helptext tr_person_dell 使用T-SQL命令删除该触发器。 drop trigger tr_person_del二、讲解、演示及提供辅导材料1. 讲解实验要求。2. 通过广播系统演示并讲解实验内容。3. 动画演示操作并提供实验要求电子版及实验报告模板。三、个别辅导

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号