



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验七:触发器的应用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,当向学生表中删除同学信息时显示学生表中以下信息进行了删除操作:并将删除的的学生信息显示出来。验证触发器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 insert 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,作用是:如果要删除一个班级,则首先需要删除其他表中与该班级有关联的信息。即:删除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(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 claid=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_count 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执行触发器: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 deleted)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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水泥生产工新员工考核试卷及答案
- 上海灯光秀施工方案审批
- 巡游出租汽车司机质量追溯知识考核试卷及答案
- 职业发展规划分析报告
- 钢结构库房制作施工方案
- 景点建筑方案设计图纸
- 武汉调岗咨询方案
- 建筑临时地面硬化方案设计
- 大学餐饮项目咨询方案
- 中国最好的建筑方案设计
- 2025年小学生“学宪法、讲宪法”网络知识竞赛题库及参考答案
- 质量策划与质量控制培训
- 个体诊所药品管理制度
- 2025年高考化学试卷(广东卷)(空白卷)
- 智联招聘公司管理制度
- 卫生心理健康课件
- 2025年学前教育专业课程考试试题及答案
- 医院培训课件:《精神科暴力特征及实战技巧》
- 2025年临床执业医师考试《第一单元》新版真题卷(含答案)
- 雅砻江公司招聘笔试题库2025
- T/CACE 0128-2024一次性原竹餐具通用技术要求
评论
0/150
提交评论